pandas resample重采样agg聚合时报SpecificationError列不存在问题求解
报错排查思路与解决方案
排查思路
- 验证实际列名格式
此类报错90%以上的诱因是列名的大小写、前后隐藏空格不匹配,在pd.read_csv代码后新增行打印列名:print(csvframe.columns.tolist())
核对输出的列名与agg字典中写的OPEN/HIGH/LOW/VOLUME是否完全一致,包括大小写、前后空格。 - 验证索引设置后的列留存情况
在csvframe = csvframe.set_index("YYYYMMDD")代码后再次打印列名,确认目标字段没有被意外删除。 - 验证dropna操作的影响
dropna默认按行删除空值,若你误加了axis=1参数会删除含空值的列,确认该参数配置正确。
解决方案
在读取csv后直接统一清理列名格式,即可解决绝大多数大小写、空格导致的匹配问题:
from __future__ import(absolute_import, division, print_function, unicode_literals) import backtrader as bt from datetime import datetime, timedelta import pandas as pd import csv import numpy as np import math csvframe = pd.read_csv("ICICIBANK.csv", parse_dates = ["YYYYMMDD"]) # 新增列名清理逻辑:去除前后空格 + 统一转为大写 csvframe.columns = csvframe.columns.str.strip().str.upper() print(csvframe.head()) csvframe = csvframe.set_index("YYYYMMDD") csvframe.dropna(inplace=True) csvframe = csvframe.resample('1M').agg({'OPEN':'first','HIGH':'max','LOW':'min','CLOSE':'last','VOLUME':'sum'}) print(csvframe.head())
如果执行列名清理后仍提示列不存在,确认你读取的csv文件路径正确,没有读取到其他错误的同名文件。
内容的提问来源于stack exchange,提问作者Vinodh
相关产品推荐
相关产品推荐

