2013-08-01 47 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

相關問題