按字母顺序排序后重新排列 GeoPandas 索引

问题描述 投票:0回答:1

我正在使用 GeoPandas Dataframe,并且必须按字母顺序对 Dataframe 进行排序。

这是原始的数据框:

形状区域 形状长度 几何 名字
0 1.705685e+06 24841.426669 多重多边形 (((-43.10567 -22.74888, -43.10568... 帕奎塔
1 4.056403e+06 18303.595717 多重多边形 (((-43.17170 -22.77661, -43.17170... Freguesia(伊利亚)
2 9.780465e+05 7758.781282 多重多边形 (((-43.18915 -22.78318, -43.18915... 银行
3 1.895742e+07 21510.059220 多重多边形 (((-43.22804 -22.78374, -43.22811... 加利昂
4 1.672546e+06 8246.109606 多边形 ((-43.18039 -22.79940, -43.18022 -22.7... 陶阿

我想使用

names
列作为参考对 DataFrame 进行排序。由于特殊字符(例如 á、ã),我无法使用
gdf.sort_values('names', ascending=True)
,因为某些行未正确排序。

然后我遇到了这个功能,解决了我的问题:

gdf = gdf.iloc[gdf['names'].str.normalize('NFKD').argsort()]

我的数据框现在如下所示:

形状区域 形状长度 几何 名字
77 6.163327e+05 4930.770118 多边形 ((-43.29425 -22.89034, -43.29536 -22.8... 废除
21 1.605524e+06 6408.772937 多边形 ((-43.33724 -22.82594, -43.33705 -22.8... 螨虫
125 3.149568e+07 43744.411247 多边形 ((-43.22040 -22.93213, -43.22116 -22.9... 阿尔托达博阿维斯塔
20 4.345727e+06 11471.418826 多边形 ((-43.37979 -22.82539, -43.38194 -22.8... 安谢塔
119 2.261300e+06 9938.098921 多边形 ((-43.24866 -22.91959, -43.24879 -22.9... 安达拉伊

但索引现在列为

77, 21, 125, 20, 119...
而不是
1, 2, 3, 4, 5...

有办法修复索引吗?

谢谢!

python pandas geopandas
1个回答
0
投票

这不是很优雅,但您可以简单地将 geopandas df 转换为 pandas,重置索引,然后重新转换为 pandas。您将有一个额外的“索引”列,您可能希望删除或保留该列以供将来参考。

your_gdf = pd.DataFrame(your_gdf)
your_gdf = your_gdf.reset_index()
your_gdf = your_gdf.set_geometry("geometry")
© www.soinside.com 2019 - 2024. All rights reserved.