2

我有一个如下所示的数据框:

Sample    P1    P2    P3
A         0.25  0.5   0.25
B         0.25  0     0.25
C         0.25  0.25  0

如果 P 列不等于零,我希望能够选择性地仅乘以它们,并输出第 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

我不太确定如何为此编写代码。对此有什么建议吗?

4

2 回答 2

4

只是抛出一个替代方案(您可以使用prodDataFrame 方法):

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
于 2013-08-01T20:42:33.293 回答
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
于 2013-08-01T19:54:59.267 回答