Неожиданное поведение pd.Grouper с ключом datetime и аргументом freqPython

Программы на Python
Anonymous
Неожиданное поведение pd.Grouper с ключом datetime и аргументом freq

Сообщение Anonymous »

Описание проблемы
При использовании pd.Grouper с определенной частотой для группировки дат в pandas наблюдается неожиданное поведение: ожидаемые даты быть сгруппированы в предыдущий период на основе определенной начальной точки частоты, вместо этого группируются в следующий период.
Шаги по воспроизведению
Ниже фрагмент кода Python, демонстрирующий проблему с использованием библиотеки pandas:

Код: Выделить всё

import pandas as pd
import numpy as np

# Create a date range and dataframe
date_range = pd.date_range(start='2023-01-01', periods=10, freq='D')
data = {
'id': np.arange(1, 11),
'date': date_range,
'value': np.random.randint(1, 100, size=len(date_range))
}
df = pd.DataFrame(data)
df["dayweek"] = df["date"].dt.dayofweek


id
дата
значение
дневная неделя




1
2023-01-01 00:00:00
76
6


2
2023-01-02 00:00:00
470

Код: Выделить всё

# Define grouping frequency
freq = "W-SAT"
grouped_df = df.groupby(["id"] + [pd.Grouper(key="date", freq=freq)]).sum().reset_index()


id
дата
значение




1
2022-12-31 00:00:00
68


2
31 декабря 2022 00:00:00
82


Текущий выпуск

Вывод grouped_df неправильно сопоставляет дату id=1 (01.01.2023, воскресенье) с 07.01.2023, субботой следующего периода, вместо ожидаемой 31.12.2022, субботы текущего периода. период.

Ожидаемое поведение

Для id=1 дата 01.01.2023 (воскресенье) логически должна быть сгруппирована в период, начинающийся с 31 декабря 2022 г. (предыдущая суббота).
Вопрос
Предназначено ли это поведение для pd.Grouper, когда определена какая-либо частота? Если да, не могли бы вы объяснить причину такой логики группировки?

Подробнее здесь: https://stackoverflow.com/questions/787 ... q-argument

Вернуться в «Python»