Как преобразовать данные m1 OHL C в m15 или любой таймфрейм OHL C в pandas? - PullRequest
0 голосов
/ 07 августа 2020

Я пытаюсь преобразовать данные M1 OHL C в M15 с помощью функции pandas resample, но никуда не денусь, вот что у меня есть:

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

1 Ответ

0 голосов
/ 07 августа 2020

Я думаю, что проблема в типе данных вашего индекса. Файлы CSV не хранят типы данных, и pandas должен делать некоторые предположения при поиске типов.

Поскольку pandas не может определить, что первый столбец имеет значения datetime, он считает его строкой; Поэтому, когда вы устанавливаете его в качестве индекса, он создает для вас ванильный индекс (следовательно, тип Index в ошибке, а не 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"""))

часто вы можете найти ответ на свой вопрос, пытаясь минимальный пример, прежде чем перейти на SO!

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...