Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/329.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_Merge - Fatal编程技术网

Python 熊猫合并不保留排序顺序

Python 熊猫合并不保留排序顺序,python,pandas,merge,Python,Pandas,Merge,我正在尝试以下方法: PoliceStations_raw=pd.DataFrame( [['BAYVIEW' ,37.729732,-122.397981], ['CENTRAL' ,37.798732,-122.409919], ['INGLESIDE' ,37.724676,-122.446215], ['MISSION' ,37.762849,-122.422005], ['NORTHERN' ,37.780186,-122.432467], ['PARK'

我正在尝试以下方法:

PoliceStations_raw=pd.DataFrame(
[['BAYVIEW'   ,37.729732,-122.397981],
 ['CENTRAL'   ,37.798732,-122.409919],
 ['INGLESIDE' ,37.724676,-122.446215],
 ['MISSION'   ,37.762849,-122.422005],
 ['NORTHERN'  ,37.780186,-122.432467],
 ['PARK'      ,37.767797,-122.455287],
 ['RICHMOND'  ,37.779928,-122.464467],
 ['SOUTHERN'  ,37.772380,-122.389412],
 ['TARAVAL'   ,37.743733,-122.481500],
 ['TENDERLOIN',37.783674,-122.412899]],columns=['PdDistrict','XX','YY'])


df1=pd.DataFrame([[0,'CENTRAL'],[1,'TARAVAL'],[3,'CENTRAL'],[2,'BAYVIEW']])
df1.columns = ['Index','PdDistrict']


  Index PdDistrict
0   0   CENTRAL
1   1   TARAVAL
2   3   CENTRAL
3   2   BAYVIEW
尽管输入了sort=False,返回的对象还是合并了表,但使用了PdDistrict作为索引,并更改了原始左数据帧行的顺序

pd.merge(df1,PoliceStations_raw,sort=False)
返回此备注,说明PdDistrict的顺序已更改

  Index PdDistrict  XX        YY
0   0   CENTRAL 37.798732   -122.409919
1   3   CENTRAL 37.798732   -122.409919
2   1   TARAVAL 37.743733   -122.481500
3   2   BAYVIEW 37.729732   -122.397981

您需要指定两个数据帧合并的方式。默认情况下,内部联接由merge模拟。但是,通过指定要左联接,df1的排序顺序将保留。因此,您只需添加how='left':


此外,sort=False是默认行为-您不需要指定它。

您需要指定两个数据帧合并的方式。默认情况下,内部联接由merge模拟。但是,通过指定要左联接,df1的排序顺序将保留。因此,您只需添加how='left':

此外,sort=False是默认行为-您不需要指定它

>>> pd.merge(df1, PoliceStations_raw, how='left')
   Index PdDistrict         XX          YY
0      0    CENTRAL  37.798732 -122.409919
1      1    TARAVAL  37.743733 -122.481500
2      3    CENTRAL  37.798732 -122.409919
3      2    BAYVIEW  37.729732 -122.397981