Найти вхождения условного значения из одного столбца и подсчитать значения из другого столбца в кадре данных - PullRequest
1 голос
/ 21 мая 2019

У меня есть кадр данных, содержащий идентификаторы пользователя, номер недели и столбец X, как показано ниже:

Я пытаюсь сгруппировать по идентификаторам пользователей, если X больше 3 в течение 3 недель.

Я пытался использовать groupby и lambda в пандах, но я застрял

weekly_X = df.groupby(['Userid','Week #'], as_index=False)
UserIds Week  X
123      14   3
123      15   4
123      16   7
123      17   2
123      18   1
456      14   4
456      15   5
456      16   11
456      17   2
456      18   6

Результат, к которому я стремлюсь, - это кадр данных, содержащий пользователя 456 и сколько недель возникло условие.

Ответы [ 2 ]

1 голос
/ 21 мая 2019
df_3 = df.groupby('UserIds').apply(lambda x: (x.X > 3).sum() > 3).to_frame('ID_want').reset_index()
df = df[df.UserIds.isin(df_3.loc[df_3.ID_want == 1,'UserIds'])]
0 голосов
/ 21 мая 2019

Получить количество значений больше, например 3 с совокупностью sum, а затем отфильтровать значения больше, например 3:

s = df['X'].gt(3).astype(int).groupby(df['UserIds']).sum()

out = s[s.gt(3)].reset_index(name='count')
print (out)
   UserIds  count
0      456      4
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...