熊猫-以值是否大于0为条件将一列除以另一列?


问题内容

我有一个熊猫数据框,其中包含日期,项目和2个值。我要做的就是输出另一列,如果B列大于0,则输出A列/ B列的乘积;如果B列等于0,则输出0。

   date     item   A   B        C       
 1/1/2017   a      0   3             0  
 1/1/2017   b      2   0             0  
 1/1/2017   c      5   2           2.5  
 1/1/2017   d      4   1             4  
 1/1/2017   e      3   3             1  
 1/1/2017   f      0   4             0  
 1/2/2017   a      3   3             1  
 1/2/2017   b      2   2             1  
 1/2/2017   c      3   9   0.333333333  
 1/2/2017   d      4   0             0  
 1/2/2017   e      5   3   1.666666667  
 1/2/2017   f      3   0             0

这是我编写的代码,但是内核一直在消亡(请记住,这只是一个示例表,我大约有30,000行,所以没有什么太疯狂了)

df['C'] = df.loc[df['B'] > 0, 'A'] / df['B'])

有什么想法吗?是否有无限运行的东西导致它崩溃?谢谢您的帮助。


问题答案:

你用 np.where

df['C'] = np.round(np.where(df['B'] > 0, df['A']/df['B'], 0), 1)

或者如果您想使用 loc

df.loc[df['B'] > 0, 'C'] = df['A']/df['B']

接着 fillna(0)