Объединить строки с одинаковой датой и добавить счетчик столбец в пандах - PullRequest
0 голосов
/ 05 сентября 2018

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

               date
0   2018-08-28 13:13:37
1   2018-08-28 13:43:31
2   2018-08-28 15:23:25
3   2018-08-28 15:23:30
4   2018-08-28 15:23:33
5   2018-08-28 15:23:34
...
790 2018-09-04 10:45:38
791 2018-09-04 10:45:38
792 2018-09-04 11:13:16
793 2018-09-04 12:12:09
794 2018-09-04 14:01:54

Я хочу сгруппировать все строки с одинаковой датой (часы, минуты и секунды не важны) и создать новый столбец с суммой (количество объединенных строк с одинаковой датой).

Вывод, который я пытаюсь выработать:

          date         sum
0   2018-08-28         6
1   2018-08-29         100
2   2018-08-30         100
3   2018-08-31         100
4   2018-09-01         100
5   2018-09-02         100
6   2018-09-03         100
7   2018-09-04         100

Я пытался поиграться с функцией groupby , но мне не удалось получить правильный вывод

Ответы [ 2 ]

0 голосов
/ 05 сентября 2018

Использование value_counts с аксессором dt.date:

df['date'].dt.date.value_counts()

Демонстрация на ваших данных образца:

df['date'].dt.date.value_counts().rename('sum').to_frame()

            sum
2018-08-28    6
2018-09-04    5
0 голосов
/ 05 сентября 2018

Использование:

df.groupby(df['date'].dt.date).size().rename(columns={'size':'sum'})

Этот метод предполагает, что Series 'date' уже имеет тип dtype datetime.

Вы можете установить это значение, если создаете DataFrame с pd.read_csv передачей аргумента "parse_dates=['date']" или с помощью:

df['date'] = pd.to_datetime(df['date'])
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...