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
相关产品推荐
相关产品推荐

