将随机列乘以另一列

2024-09-27 21:23:14 发布

您现在位置:Python中文网/ 问答频道 /正文

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

    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

如何获得所需的输出?你知道吗


Tags: 数据in名称df列表forreturnif
2条回答

使用数组数据-

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

axis=0上使用条件.locmul

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

相关问题 更多 >

    热门问题