将大量 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
我有一个数据框 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