过滤数据框检查列中的值是否为特定对象

filter dataframe checking if values in a column are certain object

我有一个问题。我有一个来自 geopandas 的 GeoDataFrame 对象,其中包含一个名为“geometry”的列以及来自 shapely.geometry 的多边形和多边形。我想过滤数据框,只遗漏多边形(知道多边形是对象)。

我试过了:

gdf = gdf[gdf["几何"] == shapely.geometry.multipolygon.MultiPolygon]

我想如果几何列中的每个值都是此 shapely.geometry.multipolygon.MultiPolygon 对象的实例,则可能是“验证”的内容。

如何过滤掉这个 Geo/DataFrame?

gdf = gdf.loc[gdf["geometry"].apply(lambda x: type(x) == shapely.geometry.multipolygon.MultiPolygon]

loc[]isinstance() 的组合将过滤为仅多边形。下面是完整的工作示例。

import geopandas as gpd
import shapely

world = gpd.read_file(gpd.datasets.get_path("naturalearth_lowres"))

world.loc[world["geometry"].apply(lambda g: isinstance(g, shapely.geometry.Polygon))]