Heroku应用刷新数据后出现KeyError: 'txs_date'问题求助
解决KeyError: 'txs_date'问题
这个错误的核心原因是刷新后的DataFrame里不存在'txs_date'列,结合你的情况(之前正常、Streamlit上能运行),可以从以下几个方向排查和修复:
- 核对新数据源的列结构:直接查看刷新后的数据文件或数据库表,确认是否存在'txs_date'列,注意列名的大小写、下划线是否和代码里的完全一致(比如有没有被改成'txsDate'、'transaction_date'这类变体)。
- 检查数据加载逻辑:看看数据刷新时的读取代码,有没有使用
usecols、drop这类过滤列的操作,不小心把'txs_date'排除了;或者有没有重命名列的步骤,却没同步到后续处理逻辑里。 - 给代码加列存在性校验:在处理日期列之前先判断列是否存在,避免直接访问报错,示例代码:
# 先检查列是否存在 if 'txs_date' not in df.columns: # 可以根据实际情况处理,比如抛出明确提示、尝试兼容相似列名 raise ValueError("数据源缺少必要列:txs_date,请检查数据刷新结果") # 再执行日期转换 df['txs_date'] = pd.to_datetime(df['txs_date'], format='%Y-%m-%d') - 排查Heroku的数据源差异:确认Heroku上拉取的刷新数据和本地/Streamlit用的是同一个版本,会不会是Heroku的缓存没更新?可以在代码里临时添加
print(df.columns),然后查看Heroku应用日志,看看实际加载的列名是什么。 - 检查数据刷新脚本:如果是自动脚本刷新数据,确认脚本有没有修改列结构,比如导出数据时遗漏了'txs_date'列,或者做了格式转换导致列名丢失。
内容的提问来源于stack exchange,提问作者ghas
相关产品推荐
相关产品推荐

