2016-06-29 104 views
3

我有兩個Pandas數據幀,我想在兩列中加入。這些列在每個df中的命名均不相同。在兩個不同名稱的列上合併兩個Pandas數據幀

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

嘗試:

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 
+0

非常完美!謝謝! –