Python: как группировать по каждому пользователю? - PullRequest
1 голос
/ 24 марта 2020

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

                      uid                       timestamp          count  val
0   ccf7758a-155f-4ebf-8740-68320f279baa    2020-03-17 13:00:00     23     3
1   ccf7758a-155f-4ebf-8740-68320f279baa    2020-03-17 13:00:00     20     2
2   ccf7758a-155f-4ebf-8740-68320f279baa    2020-03-17 15:00:00     10     5
3   16162f81-d745-41c2-a7d6-f11486958e36    2020-03-18 09:00:00     9      6
4   16162f81-d745-41c2-a7d6-f11486958e36    2020-03-18 09:00:00     9      3

Я бы хотел группировать для каждого uid, чтобы иметь сумму count каждый час и среднее значение val

Я хотел бы что-то вроде следующего

                      uid                       timestamp          count  val
0   ccf7758a-155f-4ebf-8740-68320f279baa    2020-03-17 13:00:00     43    2.5
2   ccf7758a-155f-4ebf-8740-68320f279baa    2020-03-17 15:00:00     10     5
3   16162f81-d745-41c2-a7d6-f11486958e36    2020-03-18 09:00:00     18    4.5

1 Ответ

1 голос
/ 24 марта 2020

Вы можете попробовать groupby в сочетании с agg, используя определение стиля словаря ваших пользовательских функций:

import pandas pd
import numpy as np

df.groupby(['uid', 'timestamp']).agg({"val": np.mean, "count" :np.sum})
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...