在pandas DataFrame中乘以列的列表

use*_*827 4 python multiplication dataframe pandas

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

cols = ['A','B','C','D']
Run Code Online (Sandbox Code Playgroud)

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

我可以做这个: df['VAL'] = df['A']*df['B']*df['C']*df['D']

但这不会扩大规模; 我想使用cols变量将这些列相乘.

Ale*_*ley 7

使用列表中的列选择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
Run Code Online (Sandbox Code Playgroud)