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

在Python/Pandas中,通过匹配列名和行名,将列与行相乘,python,pandas,Python,Pandas,我有一个像这样的数据框 > data A B 1 1 2 2 2 1 > ref Names Values 1 A 5 2 B 10 我有一个参考数据框,看起来像这样 > data A B 1 1 2 2 2 1 > ref Names Values 1 A 5 2 B 10 我想用Ref中具有相同名称的对应行乘以每个列 结果应该是这样 > result A B 1

我有一个像这样的数据框

> data
  A B
1 1 2
2 2 1
> ref
  Names Values
1     A      5
2     B     10
我有一个参考数据框,看起来像这样

> 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中实现这一点的最快方法是什么?任何帮助都将不胜感激

您可以查看
mul

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

您可能需要检查
mul

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

您的参考数据框
ref
可以表示为
系列
,如下所示或使用
ref.set\u索引('Names')['Values']

s = pd.Series([5, 10], index=['A', 'B'])
您的
数据
数据框如下所示:

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

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

参考数据框
ref
可以表示为
系列
,如下所示,也可以表示为
ref.set_index('Names')['Values']

s = pd.Series([5, 10], index=['A', 'B'])
您的
数据
数据框如下所示:

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

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

data.mul(dict(ref.values))
您可以用字典相乘。非常感谢!正是我想要的
data.mul(dict(ref.values))
你可以乘以字典。非常感谢!正是我想要的