合并GeoDataFrame与DataFrame后Primary_IncomeNet列全为NaN:原因及解决
原因与解决方案
核心问题
- 变量名误用:你把收入数据读取到了
provi_income变量,但合并时调用的是income——这个变量只是存储了csv文件路径的字符串,根本不是实际的数据框,自然无法匹配出有效数据。 - 字符串空格不匹配:从你提供的income表数据能看到,
identificatie列的每个PV值后面都带了多余空格(比如PV20),而polygons表的identificatie列是无空格的干净值(PV20),字符串内容不一致导致关联失败。
修正代码
# 修正文件路径写法(原代码缺少引号,会报错) polygons = gpd.read_file("polygons.geojson") provi_income = pd.read_csv("income.csv") # 清理两个表中identificatie列的首尾空格 polygons['identificatie'] = polygons['identificatie'].str.strip() provi_income['identificatie'] = provi_income['identificatie'].str.strip() # 使用正确的变量执行左连接 merge = polygons.merge(provi_income, on="identificatie", how='left')
验证方法
可以先检查两个列的唯一值是否匹配,确认清理效果:
print("polygons的identificatie唯一值:", polygons['identificatie'].unique()) print("provi_income的identificatie唯一值:", provi_income['identificatie'].unique())
如果输出的唯一值完全对应,合并后Primary_IncomeNet列就会正常显示数值。
内容的提问来源于stack exchange,提问作者Ben Watson
相关产品推荐
相关产品推荐

