按列名连接pandas数据帧

时间:2013-12-04 12:35:48

标签: python pandas dataframe

我有两个数据框,其中包含以下列名称:

frame_1:
event_id, date, time, county_ID

frame_2:
countyid, state

我希望通过county_ID = countyid上的(左)加入包含以下列的数据框:

joined_dataframe
event_id, date, time, county, state

如果我要加入的列不是索引,我无法弄清楚如何做到这一点。什么是最简单的方法?谢谢!

2 个答案:

答案 0 :(得分:92)

您可以使用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 :(得分:2)

您需要将county_ID作为右框架的索引:

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

为了您的信息,在pandas中,当右框架在连接列上具有非唯一值时,连接会中断。见bug

因此您需要在加入, verify_integrity=True

之前验证完整性