Python 按列名连接数据帧
我有两个具有以下列名的数据帧:Python 按列名连接数据帧,python,pandas,dataframe,Python,Pandas,Dataframe,我有两个具有以下列名的数据帧: frame_1: event_id, date, time, county_ID frame_2: countyid, state 我想通过在county\u ID=countyid上连接(左)来获得具有以下列的数据帧: joined_dataframe event_id, date, time, county, state 如果我想连接的列不是索引,我就不知道该怎么做。最简单的方法是什么?谢谢 您可以按如下方式使用left_on和right_on选项: p
frame_1:
event_id, date, time, county_ID
frame_2:
countyid, state
我想通过在county\u ID=countyid
上连接(左)来获得具有以下列的数据帧:
joined_dataframe
event_id, date, time, county, state
如果我想连接的列不是索引,我就不知道该怎么做。最简单的方法是什么?谢谢 您可以按如下方式使用left_on和right_on选项:
pd.merge(frame_1, frame_2, left_on='county_ID', right_on='countyid')
从问题中我不确定您是否只想合并键是否位于左侧数据帧中。如果是这样的话,那么下面的步骤就可以了(上面的步骤实际上是多对多合并)
您需要将
country\u ID
作为右框的索引:
frame_2.join ( frame_1.set_index( [ 'county_ID' ], verify_integrity=True ),
on=[ 'countyid' ], how='left' )
请参考,在“左”中,当右框架在连接列上具有非唯一值时,左连接将断开。看这个
因此,您需要在通过
加入之前验证完整性,验证完整性=True
要对此进行一点扩展,如果您想在一侧指定索引,您可以使用右侧
@Woody如果框架1
已经有县ID
作为索引,而frame_2
已经将countyid
作为索引了吗?我知道我可以在你的答案中用frame\u 1.reset\u index()
代替frame\u 1
(和frame\u 2
)。但是有没有更有效的方法可以在不重置索引的情况下加入/合并?
frame_2.join ( frame_1.set_index( [ 'county_ID' ], verify_integrity=True ),
on=[ 'countyid' ], how='left' )