Python geopandas:索引contains()方法的歧义性

Python geopandas:索引contains()方法的歧义性,python,pandas,geopandas,Python,Pandas,Geopandas,我有一个简单的点坐标系,像这样: name geometry 0 Location1 POINT (9.71852 50.56186) 1 Location2 POINT (9.72912 50.55847) 另一方面,我有一个更复杂的GeoDataFrame,它由多边形组成。我的目标是,如果一个点位于多边形区域内,用另一个GDF的一些信息更新我的点GDF 所以我想使用contains()方法来检查哪些多边形包含一个点。我用一个简单

我有一个简单的点坐标系,像这样:

        name        geometry
0       Location1   POINT (9.71852 50.56186)
1       Location2   POINT (9.72912 50.55847)
另一方面,我有一个更复杂的GeoDataFrame,它由多边形组成。我的目标是,如果一个点位于多边形区域内,用另一个GDF的一些信息更新我的点GDF

所以我想使用contains()方法来检查哪些多边形包含一个点。我用一个简单的布尔掩码进行了测试:

mask = polygons.contains(points.loc[0,'geometry'])
selection = polygons.loc[mask]
显然,选择返回与第一行GDF点匹配的多边形。我想考虑GDF的所有行,比如:

mask = polygons.contains(points['geometry'])

这个掩码不起作用,我想这是一个索引问题,但我不知道如何修复它…

这实际上是现在预期的行为
GeoSeries.contains
是行操作,这意味着如果执行
polygons.contains(point)
,它将首先对齐两个GeoSeries,然后检查第0行上的多边形是否包含第0行上的点等

如果要使用多边形中的数据更新点,应使用
geopandas.sjoin
-

在您的情况下,这可能与此类似:


points\u with_data=geopandas.sjoin(points,polygons,how='left')

刚刚对它进行了测试,效果非常好。非常感谢你!