我正在使用 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...
有办法修复索引吗?
谢谢!
这不是很优雅,但您可以简单地将 geopandas df 转换为 pandas,重置索引,然后重新转换为 pandas。您将有一个额外的“索引”列,您可能希望删除或保留该列以供将来参考。
your_gdf = pd.DataFrame(your_gdf)
your_gdf = your_gdf.reset_index()
your_gdf = your_gdf.set_geometry("geometry")