根据指定的索引对数据框进行排序

时间:2019-09-01 12:25:41

标签: python pandas geopandas

目前,我有一个名为GeoDataframe的{​​{1}},它看起来像这样,其中几何图形表示一个Point(纬度,经度)。

world

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

      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)

现在我有一个看起来像这样的系列

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 Geodataframe的副本,因此如下所示?谢谢!

world

2 个答案:

答案 0 :(得分:3)

您可以使用.locDataFrame重新排列到您喜欢的索引位置:

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

答案 1 :(得分:2)

好像您需要reindex。使用从计算距离到重新索引world所得的数据框:

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