GeoPandas:如何用单个DataFrame按SA4_CODE21筛选另一DataFrame
解决GeoPandas中通过SA4_CODE21筛选DataFrame的问题
直接通过布尔索引筛选是最直接的方案,能避免merge可能带来的类型不匹配或意外匹配问题,步骤如下:
提取df1中的目标SA4_CODE21值
因为df1仅含一行数据,直接通过位置索引取出对应值:# 提取目标代码 target_code = df1['SA4_CODE21'].iloc[0]筛选df2中匹配的记录
利用布尔索引直接过滤GeoDataFrame,筛选后仍保留GeoDataFrame的地理属性:# 筛选匹配的记录 filtered_df2 = df2[df2['SA4_CODE21'] == target_code]
常见问题处理
如果出现筛选结果为空或异常,大概率是列类型不匹配(比如df1的SA4_CODE21是整数,df2的是字符串),可以统一类型后再筛选:
# 统一转为字符串类型后匹配 target_code = str(df1['SA4_CODE21'].iloc[0]) filtered_df2 = df2[df2['SA4_CODE21'].astype(str) == target_code]
如果后续df1扩展为多行数据,可改用isin批量匹配:
filtered_df2 = df2[df2['SA4_CODE21'].isin(df1['SA4_CODE21'])]
内容的提问来源于stack exchange,提问作者nd_dd22
相关产品推荐
相关产品推荐

