У меня есть фрейм данных с 2M строками в следующем формате:
ID Number
1 30
1 40
1 60
2 10
2 30
3 60
Мне нужно выбрать идентификаторы с номерами 30 и 40 (в этом случае вывод должен быть 1).
Я знаю, что мы можем создать новый DF, имеющий только номера 30 и 40, а затем сгруппировать, чтобы увидеть, какие идентификаторы имеют больше, чем число 1. Но есть ли способ сделать оба в выражении groupby?
Мой код:
a=df[(df['Number']==30) | (df['Number']==40) ]
b=a.groupby('ID')['Number'].nunique().to_frame(name='tt').reset_index()
b[b['tt'] > 1]