Pandas datetime: ежегодное сравнение по дням недели - PullRequest
1 голос
/ 09 апреля 2020

У меня есть данные с индексом даты и времени в DataFrame. Для каждой даты я хотел бы вычислить pct_change для числа из предыдущего года.

import pandas as pd
import numpy as np
idx = pd.date_range('2019-01-01', periods=1000)
df = pd.DataFrame(np.arange(1000), index=idx)

Однако , я не хочу вычислить «предыдущий год» в тот же день и месяц. Вместо этого я хочу сравнить каждый день в 2020 с первым днем ​​с таким же днем ​​недели в 2019. Что я имею в виду?

В 2020 году 1 января была средой. В 2019 году первая среда была 2 января. Таким образом, разница по дням недели будет [value at 2020-01-01]/[value at 2019-01-02].

Так что для сравнения 2020-2019 гг. Мне просто нужно знать, что есть положительное смещение +1, и, следовательно, go назад [365-1] дней для каждого сравнения. Каким будет общее решение c на два года?

1 Ответ

0 голосов
/ 09 апреля 2020

Это будет делать:

s = df.groupby([df.index.year, df.index.dayofweek]).cumcount()
shifted = df.groupby([s, df.index.dayofweek]).shift()

shifted.loc['2020-01-01']
# 0    1.0
# Name: 2020-01-01 00:00:00, dtype: float64
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...