如何根据pandas中的第三个数据帧加入两个数据帧?

时间:2016-01-18 15:55:46

标签: python pandas

我有两个表格的数据框: 表1

sid   student_details
1      A
2      B
3      C

表2

did   dept_details
    4      E
    5      F
    6      G

表3:

sid    did
1    5
3    4
2    6

现在如何根据pandas中的dataframe3加入dataframe1和dataframe2?

2 个答案:

答案 0 :(得分:1)

我们的想法是将你的df3加入第一个。

df = df1.set_index('sid').join(df3.set_index('sid')).reset_index()
df = df.set_index('did').join(df2.set_index('did')).reset_index().drop('did', 1)

答案 1 :(得分:0)

您可以使用双merge

print df1
     sid student_details
0    1               A
1    2               B
2    3               C

print df2
   did dept_details
0    4            E
1    5            F
2    6            G

print df3
   sid  did
0    1    5
1    3    4
2    2    6

print pd.merge(pd.merge(df1, df3, on=['sid']), df2, on=['did'])

   sid student_details  did dept_details
0    1               A    5            F
1    2               B    6            G
2    3               C    4            E

或者,如果您已设置索引:

print df1
    student_details
sid                
1                 A
2                 B
3                 C

print df2
    dept_details
did             
4              E
5              F
6              G

print df3
     did
sid     
1      5
3      4
2      6

print pd.merge(pd.merge(df1, df3, left_index=True, right_index=True).set_index('did'),
                        df2, left_index=True, right_index=True)

    student_details dept_details
did                             
4                 C            E
5                 A            F
6                 B            G