Панды - Объединить строки в одну строку OHLC, если время одинаковое? - PullRequest
0 голосов
/ 04 ноября 2019

Я экспериментировал с данными resampling (60S) от тика database до другого database, называемого min.

Я взял to_excel обеих баз данных, загрузив в pandas.

В min фрейме данных:

       timestamp           open      high      low       close
47759 2019-11-04 14:23:00  30468.00  30473.90  30440.15  30445.00
47758 2019-11-04 14:23:00  30468.00  30473.90  30440.15  30450.00
47758 2019-11-04 14:23:00  30468.00  30473.90  30440.15  30455.00
47758 2019-11-04 14:23:00  30468.00  30473.90  30440.15  30460.00
47758 2019-11-04 14:23:00  30468.00  30479.00  30440.15  30479.00

И, конечно, есть множество строккак и выше с разными временными метками.

Мне интересно, как я могу объединить все это вместе, чтобы получить только 1 строку с правильным open, high, low, close.

Процесс не может быть трудоемким, так какэто должно быть сделано для обработки сигнала.

TIA

1 Ответ

1 голос
/ 04 ноября 2019

вы можете использовать .agg и передавать словарь столбцов с намеченной вами метрикой агрегации после начального groupby

print(df)

     timestamp   open     high       low  close
0  2019-11-04 14:23:00  30468  30473.9  30440.15  30445
1  2019-11-04 14:23:00  30468  30473.9  30440.15  30450
2  2019-11-04 14:23:00  30468  30473.9  30440.15  30455
3  2019-11-04 14:23:00  30468  30473.9  30440.15  30460
4  2019-11-04 14:23:00  30468  30479.0  30440.15  30479

df1 = df.groupby(df['timestamp']).agg
           ({'open' : 'first', 'high' : 'max', 'low' : 'min', 'close' : 'last'})
print(df1)
                          open     high       low  close
timestamp                                           
2019-11-04 14:23:00  30468  30479.0  30440.15  30479

, если вы не хотите игнорировать время и просто сосредоточиться на дате, когда выможно сделать

df.groupby(df['timestamp'].dt.date).agg
           ({'open' : 'first', 'high' : 'max', 'low' : 'min', 'close' : 'last'})

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