Группировка по штату и дате с группировкой по месяцам с панд и паркетных досок

#pandas #grouping

Вопрос:

В моем наборе данных, который находится в файлах parquet,у меня есть разные данные с установленными столбцами. Те, которые меня интересуют, — это штат, идентификаторы и даты. Я хотел бы сгруппировать данные по штатам, а затем подсчитать различные идентификаторы в месяц. Однако даты уже указаны в формате ГГГГ-ММ-ДД, поэтому, когда я выполняю свой запрос:

 df.groupby(["state", "date"])["id"].count()
 

Мой результат-подсчет для каждой даты отдельно для каждого штата.

Как я мог бы изменить его, чтобы он повторялся по месяцам отдельно, не изменяя все файлы данных?

Ответ №1:

Поскольку вы не предоставили фиктивные данные для тестирования, вы можете попробовать:

Во-первых, убедитесь, что ваш столбец даты имеет тип datetime:

 df['date']=pd.to_datetime(df['date'])
 

Затем:

 out=df.groupby(['state',pd.Grouper(key='date',freq='m')])['id'].nunique()
 

или

 out=df.groupby(['state',df.pop('date').dt.floor('m')])['id'].nunique()