乘以 pandas DataFrame 中的列列表

Multiply list of columns in pandas DataFrame

我有一个 DataFrame (df),包含以下列:

cols = ['A','B','C','D']

如何将这些列中的值相乘以形成一个名为 'VAL' 的列?

我能做到:df['VAL'] = df['A']*df['B']*df['C']*df['D']

但这不会扩展;我想使用 cols 变量将这些列相乘。

我假设您想要这样的乘积,以便对于每一行,您都有该行的 a、b、c 和 d 的乘积。

可以使用apply方法:

df['VAL'] = df.apply(lambda x: x.A * x.B * x.C * x.D, 轴=1 )

Select 列表中的列使用 loc,然后跨行使用 .prod()(通过指定 axis=1)。例如:

>>> cols = ['A','B','C','D']
>>> df = pd.DataFrame(np.random.randint(1, 4, size=(3,4)), columns=list('ABCD'))
>>> df
   A  B  C  D
0  2  2  1  1
1  2  3  1  1
2  3  1  3  3

>>> df['VAL'] = df.loc[:, cols].prod(axis=1)
>>> df
   A  B  C  D  VAL
0  2  2  1  1    4
1  2  3  1  1    6
2  3  1  3  3   27