Python Pandas通过键组合2 df

时间:2017-11-29 21:12:23

标签: pandas dictionary join

我正在尝试将这两个数据帧组合在一起: df1 =

ID1 ID2
111 1001
112 1002
113 1003
114 1004
115 1005

df2 =

ID1  Name   Age
111  ABC    20
111  ABC    21
1001 ABC    22
1002 QAZ    18
1002 QAZ    19
1002 QAZ    20
113  XYZ    25
113  XYZ    25

得到这样的输出:

ID      Name Age ID1    ID2
111     ABC  20  111    1001
111     ABC  21  111    1001
1001    ABC  22  111    1001
1002    QAZ  18  112    1002
1002    QAZ  19  112    1002
1002    QAZ  20  112    1002
113     XYZ  25  113    1003
113     XYZ  25  113    1003

这可能吗?

提前致谢!

1 个答案:

答案 0 :(得分:1)

merge + combine_first PS:我认为df2中的ID1应为ID

df2.merge(df1,left_on='ID',right_on='ID1',how='left').\
        combine_first(df2.merge(df1,left_on='ID',right_on='ID2',how='left'))
Out[912]: 
     ID Name  Age    ID1     ID2
0   111  ABC   20  111.0  1001.0
1   111  ABC   21  111.0  1001.0
2  1001  ABC   22  111.0  1001.0
3  1002  QAZ   18  112.0  1002.0
4  1002  QAZ   19  112.0  1002.0
5  1002  QAZ   20  112.0  1002.0
6   113  XYZ   25  113.0  1003.0
7   113  XYZ   25  113.0  1003.0