熊猫数据帧:一列替换所有的值,根据条件
问题描述:
我有一个简单的数据框类似如下:熊猫数据帧:一列替换所有的值,根据条件
我想从“第一季”列中选择所有值,并替换那些这比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,也是10 minutes to pandas这表明语义
编辑
如果你想生成一个布尔值指标,那么你可以只使用布尔条件产生boolean值系列和铸铁的D型到int
这将分别转换True
和False
到1
和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
工作太棒了!难道不可能施加多重转换吗? 'df.loc [df ['First Season']> 1990,'First Season'] = 1 df.loc [df ['First Season'] ichimok
您可以使用一个技巧'df ['First Season'] =(df ['First Season']> 1990).astype(int)'这会创建一个布尔串并且转换为int转换'True'和“假”分别为“1”和“0” – EdChum
astype(int)更加可Pandorable!好答案。 – mythicalcoder