我有一个简单的 DataFrame,如下所示:
|
Team |
First Season |
Total Games |
0 |
Dallas Cowboys |
1960 |
894 |
1 |
Chicago Bears |
1920 |
1357 |
2 |
Green Bay Packers |
1921 |
1339 |
3 |
Miami Dolphins |
1966 |
792 |
4 |
Baltimore Ravens |
1996 |
326 |
5 |
San Francisco 49ers |
1950 |
1003 |
我想从以下位置选择所有值First Season
列并将 1990 年以上的数据替换为 1。在此示例中,只有巴尔的摩乌鸦队会将 1996 年替换为 1(保持其余数据不变)。
我使用过以下内容:
df.loc[(df['First Season'] > 1990)] = 1
但是,它将该行中的所有值替换为 1,而不仅仅是“第一季”列中的值。
如何仅替换该列中的值?
您需要选择该列:
In [41]:
df.loc[df['First Season'] > 1990, 'First Season'] = 1
df
Out[41]:
Team First Season Total Games
0 Dallas Cowboys 1960 894
1 Chicago Bears 1920 1357
2 Green Bay Packers 1921 1339
3 Miami Dolphins 1966 792
4 Baltimore Ravens 1 326
5 San Franciso 49ers 1950 1003
所以这里的语法是:
df.loc[<mask>(here mask is generating the labels to index) , <optional column(s)> ]
您可以检查docs http://pandas.pydata.org/pandas-docs/stable/indexing.html#selection-by-label还有10分钟到熊猫 http://pandas.pydata.org/pandas-docs/stable/10min.html#selection-by-label它显示了语义
EDIT
如果您想生成布尔指标,那么您只需使用布尔条件来生成布尔系列并将数据类型转换为int
这将转换True
and False
to 1
and 0
分别:
In [43]:
df['First Season'] = (df['First Season'] > 1990).astype(int)
df
Out[43]:
Team First Season Total Games
0 Dallas Cowboys 0 894
1 Chicago Bears 0 1357
2 Green Bay Packers 0 1339
3 Miami Dolphins 0 792
4 Baltimore Ravens 1 326
5 San Franciso 49ers 0 1003
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)