我的数据框如下所示:
Sample P1 P2 P3
A 0.25 0.5 0.25
B 0.25 0 0.25
C 0.25 0.25 0
我希望能够选择性地仅将P列乘以它们不等于0,并输出第5列乘法值。它应如下所示:
Sample P1 P2 P3 Multiplied
A 0.25 0.5 0.25 0.03125
B 0.25 0 0.25 0.0625
C 0.25 0.25 0 0.0625
我不太确定如何为此编写代码。对此有什么建议吗?
答案 0 :(得分:4)
只是抛弃替代方案(您可以使用prod
DataFrame方法):
In [11]: df['multiplied'] = df[df != 0].prod(axis=1)
In [12]: df
Out[12]:
P1 P2 P3 multiplied
Sample
A 0.25 0.50 0.25 0.03125
B 0.25 0.00 0.25 0.06250
C 0.25 0.25 0.00 0.06250
答案 1 :(得分:3)
In [120]: df['multiplied'] = np.prod(df[df!=0].fillna(1).values,axis=1)
In [121]: df
Out[121]:
P1 P2 P3 multiplied
Sample
A 0.25 0.50 0.25 0.03125
B 0.25 0.00 0.25 0.06250
C 0.25 0.25 0.00 0.06250