是否可以将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)
,但无法找到一种方法将此用于我的目的。
答案 0 :(得分:15)
您可以使用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