0

我正在尝试使用 pandas resample 函数将 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 数据

4

1 回答 1

0

我强烈的猜测是问题出在索引的数据类型上。CSV 文件不存储数据类型,pandas 必须做一些猜测才能找到类型。

由于 pandas 无法确定第一列有日期时间值,因此它认为它是一个字符串;因此,当您将其设置为索引时,它会为您创建一个普通索引(因此Index错误中的类型,而不是 a DatetimeIndex)您希望在read_csv调用期间/之后以及在将其设置为索引之前将其转换为正确的格式。

请参阅此答案以了解如何在读取 CSV 文件后转换格式。如果您想在读取 CSV 时进行数据转换(这更好并且需要更少的时间/内存),请查看参数向下的文档。parse_dates

PS:提出更好问题的提示,您可以像这样共享部分数据以提供最小的可重复示例:

from io import StringIO
df = pandas.read_csv(StringIO("""A,B,C
                                 a,b,c
                                 d,,f"""))

很多时候,您可能会在尝试制作最小示例之前找到问题的答案!

于 2020-08-07T03:20:48.107 回答