13

すべての列を掛け合わせてPandas.DataFrame、DataFrame のすべての行の単一の値を取得することは可能ですか?

例として、

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

の値を持つ新しいDataFrame df2場所が必要です。df2.ix[x,0]df.ix[x,0] * df.ix[x,1] * df.ix[x,2]

ただし、これをハードコーディングしたくありません。ループを使用してこれを実現するにはどうすればよいですか?

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

4

1 に答える 1

25

使用できます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

またapply np.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
于 2013-05-07T16:12:53.397 に答える