Resample Monthly to Weekly не начинается неделя в понедельник? - PullRequest
0 голосов
/ 06 августа 2020

У меня есть фрейм данных df:

year | month | A
2020 | 1     | 4
2020 | 2     | 4
2020 | 3     | 6
2020 | 4     | 5
2020 | 5     | 5

Я хочу пересчитать его на еженедельный и получить неделю года в виде нового столбца. Каждая неделя месяца должна получать одинаковое количество месячного значения из столбца A.

df["day"] = 1
df["date"] = df[["year", "month", "day"]].astype(str).apply(lambda x: pd.to_datetime('-'.join(x)), 1)
df = df.set_index("date")
df = df.drop(["year", "month", "day"], axis=1)

Результаты в:

date       | A
2020-01-01 | 4
2020-02-01 | 4
2020-03-01 | 6
2020-04-01 | 5
2020-05-01 | 5

Теперь я переделываю выборку:

s = df.resample(rule="W").mean()
s = s.groupby(s["A"].notnull().cumsum()).["A"].transform(lambda x : x.sum()/len(x)).to_frame()
s = s.reset_index()

s["week_of_year"] = s["date"].dt.isocalendar().week
s = s.set_index("date")

Результаты в:

date       | A   | week_of_year
2020-01-03 | 0.8 | 53
2020-01-10 | 0.8 | 1
2020-01-17 | 0.8 | 2
2020-01-24 | 0.8 | 3 
2020-01-31 | 0.8 | 4
2020-02-07 | 1   | 5

Вопрос: Почему первая неделя начинается 03.01.2020? Это пятница, а не понедельник. Я понимаю, что week_of_year = 53, потому что конец декабря 2019 года приходится на понедельник, и это стандарт ISO.

Но разве моя следующая неделя не должна начинаться в 2020-01-06 == понедельник?

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