pandas - 在 Geopandas 数据框中按经度对几何列进行排序/排序

标签 pandas dataframe sorting gis geopandas

我在 Geopandas 几何列中有一堆 POINT Z (x,y,z) 值。我想利用这些点并构造一条线,然后我可以缓冲它以创建多边形。

生成我使用的行:

lineStringObj = LineString([[a.x, a.y] for a in gdf.geometry.values])

当所有点值都按纬度北/南正确排序时,这很好。但是,我的数据框需要按经度排列为东/西,因此当我创建 linestringobj 时,点会连接成一条漂亮的直线,而不是根据纬度顺序进行锯齿形排列。如何根据几何列的经度 (gdf.geometry.values.x) 值对数据帧进行排序/重新排序?

enter image description here

最佳答案

您可以使用pd.Series.argsort获取排序顺序:

gdf = gdf.iloc[
   gdf.geometry.x.argsort().values
]

此时,您可以使用上面的相同代码构建线串。

关于pandas - 在 Geopandas 数据框中按经度对几何列进行排序/排序,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/75646734/

相关文章:

python - Pandas Rolling Groupby 移回 1,试图滞后于滚动总和

python - 如何使用 Pandas 删除项目或字符串少于一定数量的行?

python - 如何将 pandas value_counts 转换为 python 列表

c++ - 在 C++ 中比较 double

python - 如何使用 matplotlib 向饼图的每个楔形添加恒定百分比

python - 用 pandas 替换数据框中的 NaN 值

python - Pandas 数据框 : convert unique row label into non-unique rows

python - 将带有行字典的 Pandas 核心系列转换为 Pandas Dataframe

java - 如何使用每行 lambda/流对 2D 列表进行排序?

java - 如果 key1 具有相同的值,如何按 key1 降序和 key2 升序对 List<Map<String,String>> 进行排序