2013-08-01 48 views
2

我有一个数据帧,看起来像下面这样:如何选择性地在pandas 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列,如果他们不等于零,并且输出乘积值的第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

只是抛出了一个替代(你可以使用prod数据帧方法):

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 
+0

doh ....忘了我们已经定义了! – Jeff

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 
+0

也可以替换'NaNs'的0领先的时候,并呼吁'上prod'。 – TomAugspurger

+1

@TomAugspurger或使用数据框PROD方法:) –

+0

@AndyHayden更容易。 – TomAugspurger

相关问题