我有一个geopandas
df,它有'geometry'
列。显然,'geometry'
列是geopandas
dfs中的一个特殊列。我可以添加BaseGeometry
或None
值到'geometry'
列。
gdf
name ... geometry
0 Storages_0 ... POINT (9.34153 47.90014)
1 Storages_1 ... POINT (12.48775 48.04216)
2 Storages_2 ... POINT (12.14856 47.95684)
3 Storages_3 ... POINT (12.58845 48.14799)
4 Storages_4 ... POINT (8.64394 49.42888)
... ... ... ...
4318 N_4059 ... POINT (1.84378 59.00563)
4319 N_4060 ... POINT (2.20207 59.15696)
4320 N_4061 ... POINT (3.06887 60.10174)
4321 N_4062 ... POINT (3.01948 60.06188)
4322 N_4063 ... POINT (2.33806 59.46650)
[4323 rows x 7 columns]
为了消除这个限制,我通过pd.DataFrame(gdf.copy())
将gdf
转换为pandas
df。我使用.copy()
,所以我在df
做的改变,不会影响gdf
。然而,我仍然不能改变df
的'geometry'
列,即使它不是geopandas
df。
我可以将geopandas
df转换为dict,然后通过.from_dict()
创建pandas
df。但是我不想这样做,因为这是不必要的转换。
我还能做什么?
几何类型的列是geopandas(不管它是怎么叫的)在底层使用了GeometryArray,这允许你只保存几何对象或None。
您可以将几何dtype的GeometryArray转换为object
dtype的数组,它解除了这些限制,但不允许您访问几何操作。
as_object = df.geometry.astype(object)