Например, у меня есть следующая таблица:
index,A,B
0,0,0
1,0,8
2,0,8
3,1,0
4,1,5
После группировки A
:
0:
index,A,B
0,0,0
1,0,8
2,0,8
1:
index,A,B
3,1,5
4,1,3
Мне нужно отбросить строки из каждой группы, где число в столбце B
меньше максимального значения из всех строк из столбца группы B
. Ну, у меня проблемы с переводом и формулировкой этой проблемы на английский, вот пример:
Максимальное значение из строк в столбце B
в группе 0
: 8
Итак, я хочу свернуть строку с индексом 0
и сохранить строки с индексами 1
и 2
Максимальное значение из строк в столбце B
в группе 1
: 5
Итак, я хочу сбрасывать строку с индексом 4
и сохранять строку с индексом 3
Я попытался использовать функцию фильтра pandas, но проблема в том, что он работает во всех строках в группе за один раз:
data = <example table>
grouped = data.groupby("A")
filtered = grouped.filter(lambda x: x["B"] == x["B"].max())
Так что мне в идеале нужен фильтр, который выполняет итерацию по всем строкам в группе.
Спасибо за помощь!
P.S. Есть ли способ удалить строки только в группах и не вернуть объект DataFrame
?