Как применить накопительную функцию Python для определенных периодов времени в течение дня, а затем выполнить сброс со следующего дня - PullRequest
0 голосов
/ 25 марта 2019

Я применяю накопительную функцию временного ряда для определенного числа периодов времени, скажем, 15 минут для серии дней, моя основная функция:

def axmp(df):
    return np.cumsum(df.Volume * (df.High + df.Low + df.Close)/3) / np.cumsum(df.Volume)

Но я не могу применить вышеупомянутую функцию кфрейм данных pandas, состоящий из 15-минутных данных о запасах по методу pandas groupby.

Как и в приведенной выше функции, я хочу добавить дополнение для сброса вышеупомянутой функции python в начале каждого нового дня (т.е.не брать какие-либо совокупные данные за предыдущие дни) и должны продолжаться более года данных о запасах.

Образцы данных:

        Date    Open    High    Low Close   Volume
13-02-2019 9:15 65.89   65.89   65.89   65.89   24339
13-02-2019 9:30 66.00   66.00   66.00   66.00   1892
14-02-2019 11:15 65.98  65.98   65.98   65.98   1937
14-02-2019 11:30 65.95  66.01   65.95   66.01   5181
15-02-2019 9:15 66.04   66.08   66.04   66.08   6189

Пожалуйста, предложите мне любые изменения в приведенном выше коде или новыйкод.

1 Ответ

0 голосов
/ 25 марта 2019

IIUC необходимо применить axmp сгруппировав по дням:

df.Date = pd.to_datetime(df.Date)
df['new_col'] = df.groupby(df.Date.dt.day).apply(axmp).reset_index(drop=True)

Выход

          Date         Open   High    Low   Close  Volume    new_col
0 2019-02-13 09:15:00  65.89  65.89  65.89  65.89   24339  65.890000
1 2019-02-13 09:30:00  66.00  66.00  66.00  66.00    1892  65.897934
2 2019-02-14 11:15:00  65.98  65.98  65.98  65.98    1937  65.980000
3 2019-02-14 11:30:00  65.95  66.01  65.95  66.01    5181  65.987279
4 2019-02-15 09:15:00  66.04  66.08  66.04  66.08    6189  66.066667
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...