我正在尝试使用pandas重采样功能将M1 OHLC数据转换为M15,但没有成功,这就是我得到的:
df = pd.read_csv("EURUSD.csv")
df = df.set_index("DatetimeIndex")
print("\tDone!")
df = df.resample('1H').agg({'Open': 'first',
'High': 'max',
'Low': 'min',
'Close': 'last'})
我得到了错误
TypeError: Only valid with DatetimeIndex, TimedeltaIndex or PeriodIndex, but got an instance of 'Index'
我尝试删除.set_index
,但又出现另一个错误,提示不能执行RangeIndex
我的数据如下:
答案 0 :(得分:0)
我的强烈猜测是问题出在您索引的数据类型上。 CSV文件不存储数据类型,而熊猫在查找类型时必须做一些猜测。
由于熊猫无法弄清楚第一列是否具有日期时间值,因此将其视为字符串。因此,当您将其设置为索引时,它会为您创建一个普通索引(因此,错误中的Index
类型,而不是DatetimeIndex
)您想在{时/之后将其转换为正确的格式{1}}调用,然后将其设置为索引。
请参阅this answer,以了解有关在读取CSV文件后如何转换格式的信息。如果您想在读取CSV时进行数据转换(这更好,而且花费的时间/内存更少),请查看read_csv
参数向下的the docs。
P.S:提出更好问题的技巧,您可以像这样共享部分数据,以提供一个最小的可重现示例:
parse_dates
通常,您可能会在寻求SO之前做一个最小的例子时找到问题的答案!