在熊猫和地理熊猫之间进行转换而不保留'geometry'列限制



我有一个geopandasdf,它有'geometry'列。显然,'geometry'列是geopandasdfs中的一个特殊列。我可以添加BaseGeometryNone值到'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转换为pandasdf。我使用.copy(),所以我在df做的改变,不会影响gdf。然而,我仍然不能改变df'geometry'列,即使它不是geopandasdf。

我可以将geopandasdf转换为dict,然后通过.from_dict()创建pandasdf。但是我不想这样做,因为这是不必要的转换。

我还能做什么?

几何类型的列是geopandas(不管它是怎么叫的)在底层使用了GeometryArray,这允许你只保存几何对象或None。

您可以将几何dtype的GeometryArray转换为objectdtype的数组,它解除了这些限制,但不允许您访问几何操作。

as_object = df.geometry.astype(object)

相关内容

  • 没有找到相关文章

最新更新