通过匹配Python / Pandas中的列名和行名来将列与行相乘

问题描述 投票:0回答:2

我有一个看起来像这样的数据框

> data
  A B
1 1 2
2 2 1

我有一个参考数据框,看起来像这样

> ref
  Names Values
1     A      5
2     B     10

我想将每一列乘以具有相同名称的Ref中的相应行

结果应该是这个

> result
   A  B
1  5 20
2 10 10

在Python中实现这一目标的最快方法是什么?任何帮助将不胜感激

python pandas
2个回答
4
投票

你可能想检查mul

df.mul(ref.set_index('Names').Values)
Out[137]: 
    A   B
1   5  20
2  10  10

1
投票

您的参考数据框ref可以表示为Series如下或与ref.set_index('Names')['Values']

s = pd.Series([5, 10], index=['A', 'B'])

您的data数据框如下:

df = pd.DataFrame(dict(A=[1,2], B=[2,1]))

将两者与df * s相乘会产生所需的输出,因为每个对象的索引用于确定哪些数组相乘。

© www.soinside.com 2019 - 2024. All rights reserved.