熊猫-以值是否大于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)