我有两个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'])
答案 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