在Pandas数据框中将所有列相乘

15

是否可能将 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),但无法想出如何将其用于我的目的。

1个回答

31

你可以使用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

您也可以使用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

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接