如何在熊猫中将m1 OHLC数据转换为m15或任何时间范围OHLC?

时间:2020-08-07 02:02:00

标签: python pandas ohlc

我正在尝试使用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

我的数据如下:

m1 data

1 个答案:

答案 0 :(得分:0)

我的强烈猜测是问题出在您索引的数据类型上。 CSV文件不存储数据类型,而熊猫在查找类型时必须做一些猜测。

由于熊猫无法弄清楚第一列是否具有日期时间值,因此将其视为字符串。因此,当您将其设置为索引时,它会为您创建一个普通索引(因此,错误中的Index类型,而不是DatetimeIndex)您想在{时/之后将其转换为正确的格式{1}}调用,然后将其设置为索引。

请参阅this answer,以了解有关在读取CSV文件后如何转换格式的信息。如果您想在读取CSV时进行数据转换(这更好,而且花费的时间/内存更少),请查看read_csv参数向下的the docs

P.S:提出更好问题的技巧,您可以像这样共享部分数据,以提供一个最小的可重现示例:

parse_dates

通常,您可能会在寻求SO之前做一个最小的例子时找到问题的答案!