python-3.x - 将两个具有相同维度并重复行的不同数据框相乘

标签 python-3.x pandas dataframe

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

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/

相关文章:

python - 如何使基于 `unicode`的逻辑兼容python2-3

python - 通过循环函数中的每一行来修改数据框

python - Pandas 中的行未正确附加

r - 如何将表格转换为数据框

python-3.x - 报废时Python中的错误异常

xml - Python xml 安装不起作用

python-3.x - Twisted - 请求未返回字节

python - read_csv 将处理多大的文件?适用于 10 行 Excel,但不适用于 100000 行——表示文件不存在

python - 使用 Pandas 合并两个 DataFrame

r - for 循环数据框并使用唯一值循环