在多个不同命名的列上合并两个Pandas数据帧

时间:2016-06-29 15:43:37

标签: python pandas join dataframe merge

我有两个Pandas数据帧,我想在两列上加入。每个df中的列的命名方式不同。

In [11]: df1
Out[11]: 
ID_1  ID_2  Hour
132   235   1
133   236   2
134   237   3

In [12]: df2
Out[12]: 
ID    Hour Price
132   1    17.2
133   2    14.6
134   3    21.3

我想得到

In [13]: df3
Out[13]: 
ID_1  ID_2  Hour  ID    Price 
132   235   1     132   17.2
133   236   2     133   14.6
134   237   3     134   21.3

在SQL中我会做类似以下的事情:

select *
from df1
join df2 on df1.ID_1 = df2.ID
and df1.Hour = df2.Hour

我知道加入不同命名列的方法是,但这似乎不允许在条件下进行第二次连接。

pd.merge(df1, df2, left_on='ID_1', right_on='ID', how='left')

...和连接多个同名列的语法是,但它们没有相同的命名......

pd.merge(df1, df2, how='left', on=['ID', 'Hour'])

1 个答案:

答案 0 :(得分:1)

尝试:

df1.merge(df2, left_on=['ID_1', 'Hour'], right_on=['ID', 'Hour'])

   ID_1  ID_2  Hour   ID  Price
0   132   235     1  132   17.2
1   133   236     2  133   14.6
2   134   237     3  134   21.3