2017-07-31 55 views
0

enter image description here如何在另一列的条件下替换列的基础值?

源数据帧:

active position category 
1  1  NaN 
1  2  NaN 
1  1  a 
0  1  a 
0  1  a 
1  2  a 
1  1  b 
0  1  b 
1  2  b 
每一行中

,如果主动为0或类别为空或两个,位置应该等于0。我如何在大熊猫做到这一点?

active position category 
1  0  NaN 
1  0  NaN 
1  1  a 
0  0  a 
0  0  a 
1  2  a 
1  1  b 
0  0  b 
1  2  b 
+0

这是一个累计和的例子。当一个新的类别开始时,头寸值不会加起来 –

+1

你是什么意思? 0或null?选择一个... –

+0

你能编辑你的文章以包含数据文本而不是图片吗?你还可以包括你认为输出应该是什么样子。 – piRSquared

回答

1

一种可能的解决方案,IIUC。将满足条件的所有行设置为0:

In [355]: df.loc[(df.active == 0) | (df.category.isnull()), 'position'] = 0; df 
Out[355]: 
    active position category 
0  1   0  NaN 
1  1   0  NaN 
2  1   1  a 
3  0   0  a 
4  0   0  a 
5  1   2  a 
6  1   1  b 
7  0   0  b 
8  1   2  b 

所有其他行保持不变。

相关问题