乘以 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
我有一个 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