2013-05-07 17 views
6

Pandas.DataFrameのすべての列を掛け合わせて、DataFrameの各行に単一の値を得ることはできますか?私はdf2.ix[x,0]df.ix[x,0] * df.ix[x,1] * df.ix[x,2]の値を持つことになり、新たなDataFramedf2をしたいパンダのデータフレーム内のすべての列を掛け合わせる

df = pd.DataFrame(np.random.randn(5,3)*10) 

を使用する例として、

、。

しかし、私はこれをハードコードしたくないのですが、これを達成するためにどのようにループを使用できますか?

私は関数df.mul(series, axis=1)を見つけましたが、これを私の目的に使用する方法を見つけません。

答えて

13

あなたはDataFrame.prod()を使用することができます。

>>> df = pd.DataFrame(np.random.randint(1, 10, (5, 3))) 
>>> df 
    0 1 2 
0 7 7 5 
1 1 8 6 
2 4 8 4 
3 2 9 5 
4 3 8 7 
>>> df.prod(axis=1) 
0 245 
1  48 
2 128 
3  90 
4 168 
dtype: int64 

あなた私はもともと行わのだが、通常は直接法が高速化されたときに利用できるものです可能性もapplynp.prod、。

>>> df = pd.DataFrame(np.random.randint(1, 10, (5, 3))) 
>>> df 
    0 1 2 
0 9 3 3 
1 8 5 4 
2 3 6 7 
3 9 8 5 
4 7 1 2 
>>> df.apply(np.prod, axis=1) 
0  81 
1 160 
2 126 
3 360 
4  14 
dtype: int64 
関連する問題