Группировка Python Pandas по дате с использованием данных даты и времени

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

df = pd.groupby(df,by=[df['Date_Time'].date()])

person GoBlue_MathMan    schedule 08.09.2016    source источник


Ответы (2)


resample

df.resample('D', on='Date_Time').mean()

              B
Date_Time      
2001-10-01  4.5
2001-10-02  6.0

Grouper

Как было предложено @JosephCottam

df.set_index('Date_Time').groupby(pd.Grouper(freq='D')).mean()

              B
Date_Time      
2001-10-01  4.5
2001-10-02  6.0

Устаревшее использование TimeGrouper

Вы можете установить индекс 'Date_Time' и использовать pd.TimeGrouper

df.set_index('Date_Time').groupby(pd.TimeGrouper('D')).mean().dropna()

              B
Date_Time      
2001-10-01  4.5
2001-10-02  6.0
person piRSquared    schedule 08.09.2016
comment
Это круто! Как предотвратить добавление дат, для которых нет данных? Например, если у меня были данные за дни 9/1, 9/2 и 9/4, там все еще есть 9/3 со значениями NaN. - person GoBlue_MathMan; 09.09.2016
comment
@GoBlue_MathMan Используйте .dropna() - person piRSquared; 09.09.2016
comment
TimeGrouper устарел. Не могли бы вы обновить свой ответ, чтобы вместо него использовать pd.Grouper(freq='D')? - person Joseph Cottam; 05.12.2018
comment
@JosephCottam вот так. Позвольте мне, если это сработает для вас. - person piRSquared; 05.12.2018
comment
Здесь при группировке по «часу» добавляются часы, которых не было в исходном файле, с нулевыми значениями. - person k.ko3n; 30.01.2019