我有两个数据帧,df1和df2。 df1的形状是(118093,2),df2是(690,5)
我正在尝试使用以下方法合并数据框:
df3 = df1.merge(df2, on='consId', how='left')
我已经删除了df2中的重复项(如建议here),我知道df1中的consId会重复(尽管整行不重复)。
我期望的行为是生成的df3应该与df1具有相同的行数,但df2的列附加到df1。
我的数据框如下:
df_consId[18:25]
Out[22]:
consId consumption
18 1155696024483 97.203390
19 1155696024483 80.527278
20 1155696024483 78.953125
21 1155699007557 137.419355
22 1155699007557 117.145161
23 1155699007557 101.500000
24 1155699007557 85.883333
df.head()
Out[23]:
consId rfrg-age rfrg-rating rfrg-type rfrg-capc
0 1155696024483 812yr 1.0 1door 150L
1 1155699007557 812yr 1.0 1door 150L
2 1155694005571 48yr 1.0 2door 250L
3 1155691016680 NaN NaN NaN NaN
4 1155697016945 13yr 5.0 1door 150L
我做df3 = df_consId.merge(df, on= 'consId', how = 'left')
尽管合并按预期工作,但df3中还有其他行,尽管df中没有重复项。有什么理由吗?
答案 0 :(得分:0)
如果左表有重复键,而右表有唯一键,这就是你提到的问题的情况,左连接应该只给出左表中的记录数。
但是,如果左表只有你提到的2列,那么在进行连接之前,最好按键对该表进行分组。