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


然后,所需的输出是将列AJ乘以valuesdf2

    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')


和当我尝试时一样:

if listado:
    valores=df2.values
    for i in range(len(listado)):
        df1[listado[i]]=df1[listado[i]]*valores
 return df1


如何获得所需的输出?

最佳答案

.loc上使用条件mulaxis=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

关于python - 随机列乘以另一列,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/46550599/

10-12 21:47