Pandas - получить все случаи более чем одного отдельного значения - PullRequest
1 голос
/ 29 апреля 2020

Выполнение 1-го шага на Python 3.7.7. Я получил этот panda dataframe (df):

date    hour    username    devicename
24/04/2020  09:00:00    AA  PC1
24/04/2020  10:00:00    AA  PC1
24/04/2020  09:30:00    BB  PC2
24/04/2020  09:35:00    BB  PC1
24/04/2020  15:00:00    CC  PC1
25/04/2020  09:00:00    AA  PC1
25/04/2020  09:10:00    BB  PC1
25/04/2020  09:15:00    BB  PC2
25/04/2020  10:00:00    BB  PC3
26/04/2020  09:00:00    AA  PC1
26/04/2020  09:15:00    AA  PC2
26/04/2020  12:00:15    AA  PC1
26/04/2020  10:30:00    BB  PC1
26/04/2020  17:15:00    BB  PC1
26/04/2020  15:05:00    CC  PC1
26/04/2020  16:30:00    CC  PC2

Я хочу получить все случаи, когда пользователь входит в систему более чем на 1 «devicename» в один и тот же день. Итак, результат, который я ожидаю:

1 Ответ

0 голосов
/ 29 апреля 2020

Используйте GroupBy.transform для сравнения больше, например 1 на Series.gt:

df = df[df.groupby(['username','date'])['devicename'].transform('nunique').gt(1)]

print (df)
          date      hour username devicename
2   24/04/2020  09:30:00       BB        PC2
3   24/04/2020  09:35:00       BB        PC1
6   25/04/2020  09:10:00       BB        PC1
7   25/04/2020  09:15:00       BB        PC2
8   25/04/2020  10:00:00       BB        PC3
9   26/04/2020  09:00:00       AA        PC1
10  26/04/2020  09:15:00       AA        PC2
11  26/04/2020  12:00:15       AA        PC1
14  26/04/2020  15:05:00       CC        PC1
15  26/04/2020  16:30:00       CC        PC2
...