I have a GeoDataFrame of polygons (~30) and a GeoDataFrame of Points (~10k)
I'm looking to create 30 new columns (with appropriate polygon names) in my GeoDataFrame of Points with a simple boolean True/False if the point is present in the polygon.
As an example, the GeoDataFrame of Polygons is this:
id geometry
foo POLYGON ((-0.18353,51.51022, -0.18421,51.50767, -0.18253,51.50744, -0.1794,51.50914))
bar POLYGON ((-0.17003,51.50739, -0.16904,51.50604, -0.16488,51.50615, -0.1613,51.5091))
The GeoDataFrame of Points is like this:
counter points
1 ((-0.17987,51.50974))
2 ((-0.16507,51.50925))
Expected output:
counter points foo bar
1 ((-0.17987,51.50974)) False False
1 ((-0.16507,51.50925)) False False
I can do this manually by:
foo = df_poly.loc[df_poly.id=='foo']
df_points['foo'] = df_points['points'].map(lambda x: True if foo.contains(x).any()==True else False
But given that I have 30 polygons, I was wondering if there is a better way.
Appreciate any help!
See Question&Answers more detail:
os 与恶龙缠斗过久,自身亦成为恶龙;凝视深渊过久,深渊将回以凝视…