Я изо всех сил пытаюсь найти решение, вот проблема.
У меня есть датафрейм в форме:
date day_time day_time_counter area
2019-06-05 morning 1 1
2019-06-05 morning 1 2
2019-06-05 morning 1 3
2019-06-05 morning 2 1
2019-06-05 morning 2 2
2019-06-05 morning 2 3
2019-06-05 morning 3 1
2019-06-05 morning 3 3
2019-06-05 evening 1 1
2019-06-05 evening 1 2
2019-06-05 evening 2 1
2019-06-05 evening 2 2
2019-06-05 evening 2 3
Есть несколько подгрупп для "date", "date_time" и "day_time_counter" (которые я разделил их пустой строкой, чтобы сделать их более заметными).
Каждая подгруппа может иметь одну, две или три «области».
Я хочу отфильтровать df, чтобы получить только одну подгруппу для «date» и «day_time», которая имеет наибольшее значение «day_time_counter» И содержит 3 различных значения «area» (1, 2, 3), то есть выбранные подгруппы должны содержать 3 строки, по одной на значение «площадь».
То есть, после фильтрации df выше, я должен получить как OUTPUT:
date day_time day_time_counter area
2019-06-05 morning 2 1
2019-06-05 morning 2 2
2019-06-05 morning 2 3
2019-06-05 evening 2 1
2019-06-05 evening 2 2
2019-06-05 evening 2 3
До сих пор мне удавалось фильтровать, получая подгруппу с самым большим "day_time_counter", но я не знаю, как включить условие полной подгруппы с 3 "областями".
df_new = df.sort_values('day_time_counter', ascending=False).drop_duplicates(['area', 'date', 'day_time'])
Большое спасибо за вашу помощь!