2016-09-08 3 views
2

У меня есть кадр данных, который выглядит следующим образом:Панда Даты group_by и ресэмплировать

A B C date 
0 J Y 2 2013-02-01 14:21:02.070030 
1 X X 0 2013-02-01 15:49:33.110849 
2 Y D 9 2013-02-01 06:47:19.369514 
3 Y C 17 2013-02-01 08:56:11.751781 
4 3 J 21 2013-02-01 14:19:12.017232 

я хотел бы, чтобы группа по дате, а затем сосчитать, но опускает информацию о часах, минуты, секунды и т.д. .

это похоже на то, как это работает:

df.set_index('date').resample('D').count() 

Два вопроса:

  1. Почему это работает? Это правильный путь?
  2. Почему что-то вроде df.group_by('date').resample('D').count() не работает?
+0

1. Поскольку 'resample' работает со временными индексами. И да, это правильный путь. 2. Что-то вроде 'df.group_by ('date'). Resample ('D'). Count()' не будет работать, потому что вам потребуется временная индексация для работы выборки. Вы можете сделать что-то вроде: 'df.set_index ('date'). Resample ('D'). Count(). Reset_index()', чтобы сохранить дату в качестве столбца. – Abdou

ответ

4

resample в каком-то смысле это просто частный случай GroupBy - а не группировки на различных значения, что является то, что grouppy('date') будет делать, она группирует время на основе преобразования индекса, поэтому вам необходимо установить индекс. Кроме того, вы можете сделать:

df.groupby(pd.Grouper(key='date', freq='D')).count() 

В следующей версии 0.19.0 вы будете иметь возможность написать выше, как это.

df.resample('D', on='date').count() 
+0

Когда я попробовал ваше предложение pd.Grouper, у меня получилась следующая ошибка: TypeError: Действителен только с DatetimeIndex, TimedeltaIndex или PeriodIndex, но получил экземпляр «Index» – Huey

+0

@Huey, вам нужно, чтобы ваш столбец даты был 'date_time '. Для нас разумно предположить, что это дата. выполните преобразование с помощью 'df.date = pd.to_datetime (df.date)', затем примените ответ chrisb. Тогда отметьте это как выбранный ответ, потому что это отличный ответ ;-) – piRSquared

+0

Я использовал pd.to_datetime, и я не смог заставить это работать. – Huey

Смежные вопросы