计算多列熊猫中特定值的数量
我有一个数据框:
A B C D E
12 4.5 6.1 BUY NaN
12 BUY BUY 5.6 NaN
BUY 4.5 6.1 BUY NaN
12 4.5 6.1 0 NaN
我想计算每一行中“BUY”出现的次数。预期结果:
A B C D E score
12 4.5 6.1 BUY NaN 1
12 BUY BUY 5.6 NaN 2
15 4.5 6.1 BUY NaN 1
12 4.5 6.1 0 NaN 0
我尝试了以下操作,但它只是为所有行提供了 0:
df['score'] = df[df == 'BUY'].sum(axis=1)
请注意,BUY 只能出现在 B、C、D、E 列中。
我试图在网上找到解决方案,但令人震惊的是没有找到。
很少有帮助将不胜感激。谢谢!
回答
您可以比较然后求和:
df['score'] = (df[['B','C','D','E']] == 'BUY').sum(axis=1)
这总结了所有的布尔值,你会得到正确的结果。
当你这样做df[df == 'BUY']
,你只是更换任何东西这是不BUY
与np.nan
,然后接管轴= 1个多年平均值的工作总和,因为你已经离开了你的结果都是np.nan
和'BUY'
字符串。因此你得到全0。