通过列名称连接熊猫数据框


84

我有两个具有以下列名称的数据框:

frame_1:
event_id, date, time, county_ID

frame_2:
countyid, state

我想通过加入(左)on获得以下列的数据框county_ID = countyid

joined_dataframe
event_id, date, time, county, state

如果我要连接的列不是索引,我无法弄清楚该怎么做。最简单的方法是什么?谢谢!

Answers:


156

您可以按以下方式使用left_on和right_on选项:

pd.merge(frame_1, frame_2, left_on='county_ID', right_on='countyid')

从问题中我不能确定您是否只想合并密钥是否位于左侧数据框中。如果是这种情况,则以下将执行此操作(以上内容实际上会进行多对多合并)

pd.merge(frame_1, frame_2, how='left', left_on='county_ID', right_on='countyid')

1
要稍微扩展一下,如果要在一侧指定索引,可以使用right_index=True
Druckles

1
@Woody如果frame_1已经具有county_ID索引并且frame_2已经具有countyid索引怎么办?我明白我可以替代frame_1.reset_index()frame_1(和同为frame_2)在你的答案。但是,有没有更有效的方法来连接/合并而不重置索引?
18年

3

您需要将其county_ID作为正确框架的索引:

frame_2.join ( frame_1.set_index( [ 'county_ID' ], verify_integrity=True ),
               on=[ 'countyid' ], how='left' )

以供您参考,当右框架在连接列上具有非唯一值时,在大熊猫中左连接断开。看到这个错误

因此,您需要先验证完整性,然后才能加入 , verify_integrity=True

By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.