2013-08-01 2 views
2

У меня есть dataframe, который выглядит, как показано ниже:Как выборочно умножать или добавлять столбцы в 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 столбцы, если они не равны нулю, и вывести пятый столбец из умноженных значений. Он должен выглядеть следующим образом:

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

Может также заменить 0s с 'NaNs' заранее и называть' prod' по этому вопросу. – TomAugspurger

+1

@TomAugspurger или использовать метод DataFrame prod :) –

+0

@ AndyHayden Еще проще. – TomAugspurger

Смежные вопросы