You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

合并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

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.25 13:36:39