Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/363.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python 按列名连接数据帧_Python_Pandas_Dataframe - Fatal编程技术网

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' )