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

时间:2018-09-11 20:49:42

标签: python pandas

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

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

2 个答案:

答案 0 :(得分:4)

您可能要检查mul

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

答案 1 :(得分: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相乘会产生所需的输出,因为每个对象的索引用于确定将哪些数组相乘。