Как изменить выборку и применить функцию с пользовательским подсчетом - PullRequest
0 голосов
/ 05 ноября 2018

Я новичок во фреймах данных и пытаюсь понять, как сделать следующее:

У меня уже есть датафрейм в виде временного ряда, например:

timestamp             uuid    source                        
2017-06-18 10:43:54   abc      two
2017-06-18 03:38:23   fgh      three
2017-06-18 07:37:02   abc      two
2017-06-18 16:49:51   fgh      one
2017-06-19 21:34:10   abc      two
2017-06-19 16:49:51   knn      three
2017-06-19 22:36:10   mug      one

Я пытаюсь 1) выполнить повторную выборку ежедневно и 2) выяснить, какие уникальные пользователи имеют более одного источника в данный день, и подсчитать количество этих пользователей

На 18-м фгх есть два уникальных источника (1), а у abc только один источник (0), так что это будет счет 1 на этот день.

19-го числа ни у одного пользователя нет более одного источника, поэтому счет за этот день равен 0.

Результат

timestamp   multi_source_users                  
2017-06-18       1
2017-06-19       0 

Я пробовал несколько комбинаций ресэмплирования и группового режима, но я продолжаю зацикливаться на общем количестве.

Я начинаю с чего-то наивного, как ...

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

или

df.groupby('uuid').count()

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

Я также знаю, что вы можете «применить» пользовательскую функцию, но также не смог сделать эту работу.

Может кто-нибудь помочь направить меня в правильном направлении? Плюс совет для размышлений о подобных проблемах в будущем? С благодарностью.

1 Ответ

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

Попробуйте следующее, используя groupby, с pd.Grouper(freq=...).

(df.groupby([pd.Grouper(freq='1D'), 'uuid']).nunique() - 1)['source'].groupby(level=0).sum()

Выход:

timestamp
2017-06-18    1
2017-06-19    0
Freq: D, Name: source, dtype: int64
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...