如何在Pandas中将negative列和Nan列值都更改为Zero

时间:2015-12-31 10:32:49

标签: python pandas dataframe

我的数据框架如下:

    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)

但是在一个命令中有效吗?我是熊猫新手。请告诉我这是不是最好的方法。

2 个答案:

答案 0 :(得分:5)

您可以使用locisnull

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