2016-02-12 71 views
1

我想有一个说,一个条件,如果在“预测” < 0,那么“回归”值= 0对大熊猫数据帧行的条件操作

这里是我的数据框

returns prediction 
0 -1.005705 0.999999 
1 0.005952 1.000000 
2 0.000000 -0.999891 
3 0.020000 -1.000000 
4 0.000000 1.000000 
5 0.005000 1.000000 
6 0.000000 -0.999984 
7 -0.005813 -0.999871 

我尝试:

df.returns[if df.pred < 0 : df.returns = 0] 

,但我得到语法错误

编辑:

我想通了我自己returns[pred < 0] = 0

回答

1

您可以使用loc

df.loc[df.prediction < 0, 'return'] = 0 
print df 
    returns prediction return 
0 -1.005705 0.999999  NaN 
1 0.005952 1.000000  NaN 
2 0.000000 -0.999891  0 
3 0.020000 -1.000000  0 
4 0.000000 1.000000  NaN 
5 0.005000 1.000000  NaN 
6 0.000000 -0.999984  0 
7 -0.005813 -0.999871  0 

,或者您需要覆盖列returns

df.loc[df.prediction < 0, 'returns'] = 0 
print df 
    returns prediction 
0 -1.005705 0.999999 
1 0.005952 1.000000 
2 0.000000 -0.999891 
3 0.000000 -1.000000 
4 0.000000 1.000000 
5 0.005000 1.000000 
6 0.000000 -0.999984 
7 0.000000 -0.999871 
+0

感谢Jezrael,我居然能在你发布这个之前先把它画出来谢谢,虽然你的方式很有趣 –