<p>这是这个问题的后续问题<a href="https://stackoverflow.com/questions/69642668/the-indices-of-the-two-geoseries-are-different-understanding-indices/69644010#69644010">The indices of the two GeoSeries are different - Understanding Indices</a></p>
<ul>
<li><strong>空间连接的右索引</strong>给出了多边形的索引,因为多边形位于空间连接的右侧</li>
<li>因此,序列<code>gpd.sjoin(dfp, df_poly).groupby("index_right").size().rename("points")</code>可以简单地连接到多边形<strong>GeoDataFrame</strong>以给出找到的点的数量</li>
<li>注意<code>how="left"</code>以确保它是左连接,而不是内部连接。任何没有点的多边形都有<code>NaN</code>在这种情况下,您可能需要<code>fillna(0)</code></李>
</ul>
<pre><code>import pandas as pd
import numpy as np
import geopandas as gpd
import shapely.geometry
import requests
# source some points and polygons
# fmt: off
dfp = pd.read_html("https://www.latlong.net/category/cities-235-15.html")[0]
dfp = pd.concat([dfp,dfp]).reset_index(drop=True)
dfp = gpd.GeoDataFrame(dfp, geometry=dfp.loc[:,["Longitude", "Latitude",]].apply(shapely.geometry.Point, axis=1))
res = requests.get("https://opendata.arcgis.com/datasets/69dc11c7386943b4ad8893c45648b1e1_0.geojson")
df_poly = gpd.GeoDataFrame.from_features(res.json())
# fmt: on
df_poly.join(
gpd.sjoin(dfp, df_poly).groupby("index_right").size().rename("points"),
how="left",
)
</code></pre>