我有一个DataFrame(df
),其中包含以下列:
cols = ['A','B','C','D']
如何将这些列中的值相乘以形成一个名为' VAL'?
的列我可以这样做:df['VAL'] = df['A']*df['B']*df['C']*df['D']
但这不会扩大;我想使用cols
变量将这些列相乘。
答案 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)