将大量 pandas 列相互相乘

Multiplying large number of pandas column to each other

我有一个数据框 df 如下:

Col1    Col2    Col3
1      4        6
2      5        7
3      6        8

我想获得以下信息:

Col1    Col2    Col3    Mult
1       4       6       24
2       5       7       70
3       6       8       144

其中 df['Mult'] = df['Col1']*df['Col2']*df['Col3']

除了我的情况,我有大约 50 列 Col1、Col2、..Col50。

所以,用下面的方法会很繁琐df['col1'].multiply(df['Col2'], axis=1)

有没有更快的方法?我试图避免对每一行使用 apply 方法,因为我认为这会非常慢,因为我的数据框有大约 100 万行。

使用prod:

df['Mult'] = df.prod(1)

或者如果列的子集:

df['Mult'] = df[['Col1', 'Col2', 'Col3']].prod(1)

输出:

   Col1  Col2  Col3  Mult
0     1     4     6    24
1     2     5     7    70
2     3     6     8   144

你也可以使用np.prod:

df['Mult'] = np.prod(df, axis=1)
import pandas as pd

df = pd.DataFrame({"Col1":[1,2,3],
                  "Col2":[4,5,6],
                  "Col3":[6,7,8]})

df["Mult"] = df.prod(1)

输出:

df

    Col1    Col2    Col3    Mult
0   1       4       6       24
1   2       5       7       70
2   3       6       8       144