代码之家  ›  专栏  ›  技术社区  ›  DJay

基于指定索引对数据帧排序

  •  1
  • DJay  · 技术社区  · 6 年前

    目前我有一个 GeoDataframe 打电话 world

          name            geometry
    0   Vatican City    POINT (12.45338654497177 41.90328217996012)
    1   San Marino      POINT (12.44177015780014 43.936095834768)
    2   Vaduz           POINT (9.516669472907267 47.13372377429357)
    3   Luxembourg      POINT (6.130002806227083 49.61166037912108)
    4   Palikir         POINT (158.1499743237623 6.916643696007725)
    

    给定另一个点(lat,long),我想找到从这个数据帧到那个特定点的最近点。我用距离函数来计算最近的点

    world.distance(Point(9.0,49.0)).sort_values()
    

    2        1.936475
    20       2.586576
    3        2.934453
    158      5.016402
    172      5.284416
              ...    
    6      179.671568
    91     182.256232
    69     188.780771
    126    191.351813
    122    197.120844
    Length: 202, dtype: float64
    

    我怎样才能得到 世界

        name            geometry
    2   Vaduz           POINT (9.516669472907267 47.13372377429357)
    20   ....           ......................
    
    2 回复  |  直到 6 年前
        1
  •  2
  •   yatu Sayali Sonawane    6 年前

    好像你需要 reindex . 使用计算要重新索引的距离得到的数据帧 world :

    world.reindex(world.distance(Point(9.0,49.0)).sort_values().index)
    
        2
  •  3
  •   iDrwish    6 年前

    .loc 重新排列 DataFrame 你喜欢的索引是:

    world = world.loc[world.distance(Point(9.0,49.0)).sort_values().index]