Возможно, у вас есть date
столбец в виде строки.
Чтобы использовать его в Grouper
с частотой, начните с преобразования этого столбца в DateTime
:
df['date'] = pd.to_datetime(df['date'])
Тогда, поскольку date
столбец является «обычным» столбцом данных (не индексом), используйте параметр key='date'
и частоту.
Подводя итог, ниже приведен рабочий пример:
import pandas as pd
d = [['2018-08-19 19:08:19', 'pga', 'yes'],
['2018-08-19 19:09:27', 'pga', 'no'],
['2018-08-19 19:10:45', 'lry', 'no'],
['2018-09-07 19:12:31', 'lry', 'yes'],
['2018-09-19 19:13:07', 'pga', 'yes'],
['2018-10-22 19:13:20', 'lry', 'no']]
df = pd.DataFrame(data=d, columns=['date', 'user', 'answer'])
df['date'] = pd.to_datetime(df['date'])
gr = df.groupby(pd.Grouper(key='date',freq='W'))
for name, group in gr:
print(' ', name)
if len(group) > 0:
print(group)
Обратите внимание, что ключ группы (name
) - это дата окончания недели, поэтому даты членов группы на раньше или равны дате, напечатанной выше.
Вы можете изменить его, передав label='left'
параметр в Grouper
.