在pandas DataFrame中乘以列的列表

时间:2015-10-05 20:46:49

标签: python pandas dataframe multiplication

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

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

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

的列

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

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

2 个答案:

答案 0 :(得分: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

答案 1 :(得分:-1)

我假设你想要产品,这样,对于每一行,你都有a,b,c和d的产品。

您可以使用apply方法:

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