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

合并GeoDataFrame与Excel数据集时遇到列类型转换及索引操作错误的解决方案咨询

合并GeoDataFrame与Excel数据集时遇到列类型转换及索引操作错误的解决方案咨询

问题分析

先帮你拆解两个错误的根源:

  1. 第一个ValueError:你转置Excel数据后,transjakarta_data的index列里包含了'Rata-rata Harlan'这个非数值的汇总行,直接用apply(int)转换整数值时,这个字符串无法被解析成整数,所以抛出错误。
  2. 第二个AttributeError:reset_index()之后你调用的是DataFrame的**默认索引(RangeIndex)**的apply方法,但RangeIndex是内置的序列索引对象,没有apply属性,你要操作的是数据列而非索引本身。

完整解决方案代码

下面是修正后的完整流程,每一步都加了注释说明:

import pandas as pd
import geopandas as gpd

# 1. 读取原始数据
transjakarta_lines = gpd.read_file('https://raw.githubusercontent.com/lokalhangatt/stackoverlow/refs/heads/main/dataviz_day13/transjakarta_lines.geojson')
# 读取Excel时保留原始结构,后续再处理转置
transjakarta_data = pd.read_excel("https://github.com/lokalhangatt/stackoverlow/raw/refs/heads/main/dataviz_day13/TJ_Agustus_2020.xlsx", index_col=0)

# 2. 处理Excel数据:转置+过滤无效行+类型转换
# 转置数据,将原行索引转为新的列并命名为'koridor'
transjakarta_data = transjakarta_data.T.reset_index(names='koridor')
# 过滤掉非数字的koridor行(比如汇总用的'Rata-rata Harlan')
transjakarta_data = transjakarta_data[transjakarta_data['koridor'].str.isdigit()]
# 把koridor列转换成整数类型(此时所有行都是纯数字,转换不会报错)
transjakarta_data['koridor'] = transjakarta_data['koridor'].astype(int)

# 3. 统一GeoDataFrame的koridor列类型
transjakarta_lines['koridor'] = transjakarta_lines['koridor'].astype(int)

# 4. 按指定键合并两个数据集
# 明确指定合并键为'koridor',避免自动匹配其他同名列的潜在问题
transjakarta = pd.merge(transjakarta_lines, transjakarta_data, on='koridor')

# 5. 规范初始化GeoDataFrame
# 直接指定几何列和坐标系,不需要后续手动赋值
transjakarta = gpd.GeoDataFrame(transjakarta, geometry='geometry', crs=transjakarta_lines.crs)

# 6. 转换为目标坐标系
epsg_jkt = 5330
transjakarta_planar = transjakarta.to_crs(epsg=epsg_jkt)

关键修正点说明

  • 过滤无效行:用str.isdigit()筛选出koridor列里的纯数字行,排除汇总行,从根源避免类型转换失败。
  • 高效类型转换:用astype(int)替代apply(int),整列转换更高效,且逻辑更清晰。
  • 明确合并逻辑:pd.merge时指定on='koridor',让合并规则更透明,减少意外匹配。
  • 规范GeoDataFrame操作:合并时直接初始化地理数据框的核心属性,避免后续手动赋值可能出现的不兼容问题。

这样处理后,两个数据集就能正常合并,同时完整保留GeoDataFrame的地理属性,后续坐标系转换也能顺利执行。

备注:内容来源于stack exchange,提问作者lokalhangatt

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.04.14 17:33:13