我有一个数据帧,比如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”参数),它就像我需要的那样,但是在乘法版本中。不知道怎么做。
答案 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]