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

Python获取纳斯达克NDX数据集后解析日期列遇KeyError求助

解决yfinance导出CSV后Date列KeyError问题

问题根源:yf.download返回的DataFrame中,日期是索引而非普通列,直接调用to_csv()时默认不会将索引写入CSV文件,因此后续读入后无法找到名为Date的列。

以下是两种可行的解决方法:

方法一:导出时直接将索引存为Date列

修改导出CSV的代码,添加index=True和index_label='Date'参数,让日期索引作为单独的Date列写入文件:

import yfinance as yf
import pandas as pd

# 下载数据
df = yf.download("NDX", start="2016-01-01", end="2022-11-02")
# 导出时保留索引并命名为Date
df.to_csv('ndx.csv', index=True, index_label='Date')

# 读入数据并自动解析Date列为日期格式
df = pd.read_csv('ndx.csv', parse_dates=['Date'])
# 若需要转为字符串格式,可执行:
# df['Date'] = df['Date'].dt.strftime('%Y-%m-%d')

方法二:针对已导出的无Date列CSV进行修复

如果已经导出了没有Date列的CSV,可以在读入时将第一列当作日期索引,再转换为普通列:

import pandas as pd

# 读入时将第一列设为索引
df = pd.read_csv('ndx.csv', index_col=0)
# 将索引转为Date列,并解析为日期格式
df['Date'] = pd.to_datetime(df.index)
# 若需要转为字符串格式:
# df['Date'] = df.index.strftime('%Y-%m-%d')
# 可选:重置索引,让Date成为普通列后移除原索引
df = df.reset_index(drop=True)

验证:执行完上述代码后,直接调用df['Date']即可正常访问日期列,不会再触发KeyError。

内容的提问来源于stack exchange,提问作者Emy

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.14 11:25:30