过滤数据框检查列中的值是否为特定对象
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))]
我有一个问题。我有一个来自 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))]