将 Pandas 数据框中的所有列相乘
Posted
技术标签:
【中文标题】将 Pandas 数据框中的所有列相乘【英文标题】:Multiply all columns in a Pandas dataframe together 【发布时间】:2013-05-01 16:24:21 【问题描述】:是否可以将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】:你可以使用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
【讨论】:
以上是关于将 Pandas 数据框中的所有列相乘的主要内容,如果未能解决你的问题,请参考以下文章
Python pandas:合并两个没有键的表(将 2 个数据帧与广播所有元素相乘;NxN 数据帧)