将pandas数据帧中的行相乘

时间:2016-04-25 20:16:49

标签: python pandas

我有一个数据帧,比如4行标记为r1到r4和2列(“c1”和“c2”)。此数据框/矩阵中的值为“a ij ”,如(伪代码):

dataframe =    c1  c2
            r1 a11 a12
            r2 a21 a22
            r3 a31 a32
            r4 a41 a42

我现在想以非常有效的方式(想想很多列)计算行的乘积。

更具体地说,我想形成一个列表,其中元素的数量等于列数,因为它的 i 元素具有所有行的乘积:

list_ = [a11 * a21 * a31 * a41, a12 * a22 * a32 * a42]

实际上我有数千列,但只有大约4行。

我查看了dataframe的“sum(...)”函数(带有“axis”参数),它就像我需要的那样,但是在乘法版本中。不知道怎么做。

1 个答案:

答案 0 :(得分:1)

IIUC你可以使用prod来逐列计算所有元素的乘积,然后你可以根据需要在结果上调用tolist

In [23]:
df = pd.DataFrame(np.arange(12).reshape(4,3), columns=list('abc'))
df
​
Out[23]:
   a   b   c
0  0   1   2
1  3   4   5
2  6   7   8
3  9  10  11

In [26]:
df.prod()

Out[26]:
a      0
b    280
c    880
dtype: int64

In [25]:
df.prod().tolist()

Out[25]:
[0, 280, 880]