我有一个由df
随机标题名称填充的列表。
listado=['A','J']
listado
只能有1个值。
如果listado
有值,那么我希望它将df中的这些列乘以另一个名为valores
的列的数据帧。
valores=df2.values
df2=
value
0 2
1 4
2 3
df如下:
df=
A B C J K
0 3 2 5 4 7
1 5 5 5 5 5
2 9 8 5 1 7
然后,所需的输出是将A
和J
列乘以values
的{{1}}:
df2
我正在尝试这样的事情,以便将列表中获得的特定列相乘:
A B C J K
0 6 2 5 8 7
1 20 5 5 20 5
2 27 8 5 3 7
但是
if listado:
valores=df2.values
for units in listado:
df1[units]=df1[units]*valores
return df1
和我尝试的时候一样:
raise Exception('Data must be 1-dimensional')
我如何获得所需的输出?
答案 0 :(得分:3)
在.loc
mul
和axis=0
In [496]: df.loc[:, listado] = df.loc[:, listado].mul(df2['value'], axis=0)
In [497]: df
Out[497]:
A B C J K
0 6 2 5 8 7
1 20 5 5 20 5
2 27 8 5 3 7
答案 1 :(得分:3)
使用数组数据 -
df[listado] = df[listado].values * df2.values
示例运行 -
In [973]: df
Out[973]:
A B C J K
0 3 2 5 4 7
1 5 5 5 5 5
2 9 8 5 1 7
In [974]: df[listado] = df[listado].values * df2.values
In [975]: df
Out[975]:
A B C J K
0 6 2 5 8 7
1 20 5 5 20 5
2 27 8 5 3 7