我正在尝试将两个数据框相乘

Df1

Name|Key |100|101|102|103|104
Abb   AB   2   6  10   5   1
Bcc   BC   1   3   7   4   2
Abb   AB   5   1  11   3   1
Bcc   BC   7   1   4   5   0


Df2

Key_1|100|101|102|103|104
AB     10  2   1   5   1
BC     1  10   2   2   4


预期产量

Name|Key |100|101|102|103|104
Abb   AB  20  12   10  25   1
Bcc   BC   1  30   14   8   8
Abb   AB  50   2   11  15  1
Bcc   BC   7  10   8   10   0


我试过将Df1分组,然后与Df2相乘,但是没有用
请帮我解决这个问题

最佳答案

您可以将df2 rename Key_1设置为Key(类似于df1),然后在mul上设置索引和level=1

df1.set_index(['Name','Key']).mul(df2.rename(columns={'Key_1':'Key'})
                              .set_index('Key'),level=1).reset_index()


或类似:

df1.set_index(['Name','Key']).mul(df2.set_index('Key_1')
   .rename_axis('Key'),level=1).reset_index()


正如@QuangHoang正确指出的那样,您也可以重命名:

df1.set_index(['Name','Key']).mul(df2.set_index('Key_1'),level=1).reset_index()




  Name Key  100  101  102  103  104
0  Abb  AB   20   12   10   25    1
1  Bcc  BC    1   30   14    8    8
2  Abb  AB   50    2   11   15    1
3  Bcc  BC    7   10    8   10    0

关于python-3.x - 将两个具有相同维度并重复行的不同数据框相乘,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/60760573/

10-12 22:37