我的数据框架如下:
A B
10 AAA 0.0333
20 BBB -67
30 CCC -0.98
40 DDD NaN
如何更改B列值(仅负值和NaN为0)
到目前为止,我尝试过:
df[df< 0 ] = 0
df.fillna(0, inplace=True)
但是在一个命令中有效吗?我是熊猫新手。请告诉我这是不是最好的方法。
答案 0 :(得分:5)
df.loc[(df['B'] < 0) | (df['B'].isnull()), 'B'] = 0
A B
10 AAA 0.0333
20 BBB 0.0000
30 CCC 0.0000
40 DDD 0.0000
答案 1 :(得分:2)
另一种方法是使用NaN
不是正面或负面的属性,因此如果我们否定正面模板,您也会返回NaN
值,我们可以将它们设置为0
也:
In [14]:
df.loc[~(df['B'] > 0), 'B'] = 0
df
Out[14]:
A B
10 AAA 0.0333
20 BBB 0.0000
30 CCC 0.0000
40 DDD 0.0000