合并CSV与GeoDataFrame后结果为空DataFrame的问题求助
解决GeoDataFrame与CSV DataFrame合并为空的问题
第一步:排查字符串匹配问题
虽然两表的County Name列数据类型都是object,但极可能存在字符串格式不匹配的情况,比如大小写差异、前后空格、特殊字符不一致,这会导致合并时完全匹配失败。
可以用以下代码验证:
# 输出grouped_gj中所有唯一的县名 print(grouped_gj['County Name'].unique()) # 输出map_df2中无法匹配到grouped_gj的县名 print(map_df2[~map_df2['County Name'].isin(grouped_gj['County Name'])]['County Name'].unique())
如果发现格式不一致,先统一格式化:
# 去除前后空格并统一转为大写(或小写) grouped_gj['County Name'] = grouped_gj['County Name'].str.strip().str.upper() map_df2['County Name'] = map_df2['County Name'].str.strip().str.upper()
第二步:使用左连接完成合并
你需要把grouped_gj的geometry列添加到map_df2中,因此要以map_df2为基准做左连接(保留map_df2的所有行,匹配grouped_gj中的几何数据)。之前默认的内连接(how='inner')只会保留两表共有的行,若县名完全不匹配就会得到空DataFrame。
执行以下代码:
# 仅提取grouped_gj中需要的列,避免冗余 geo_cols = grouped_gj[['County Name', 'geometry']] # 左连接合并,结果保留map_df2的所有行 new_gdf = map_df2.merge(geo_cols, on='County Name', how='left') # 若需要最终结果为GeoDataFrame,可转换 import geopandas as gpd new_gdf = gpd.GeoDataFrame(new_gdf, geometry='geometry')
验证合并结果
合并后可通过以下方式确认:
- 检查
new_gdf的行数是否与map_df2一致(2010行) - 查看
geometry列,匹配成功的县会有几何数据,未匹配的会显示NaN
内容的提问来源于stack exchange,提问作者jakesa
相关产品推荐
相关产品推荐

