如何在pandas DataFrame中有选择地相乘或添加列?

时间:2013-08-01 19:48:40

标签: python-2.7 lambda pandas generator dataframe

我的数据框如下所示:

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

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

2 个答案:

答案 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