Для примера я следующие таблицы:Python панд - фильтр строк после GroupBy
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
:
Так что я хочу бросить строку с индексом 0
и сохранить строки с индексами 1
и 2
Максимальное значение из строк в столбце B
в группе 1
:
Так что я хочу бросить строку с индексом 4
и сохранить строку с индексом 3
Я пытался использовать функцию панды фильтра, но проблема в том, что она работает на всех строк в группе в одно время:
data = <example table>
grouped = data.groupby("A")
filtered = grouped.filter(lambda x: x["B"] == x["B"].max())
Так что мне в идеале нужен фильтр, который выполняет итерацию по всем строкам в группе.
Спасибо за помощь!
P.S. Есть ли способ удалить строки только в группах и не вернуть объект DataFrame
?
последнего бита совершенно неоднозначно: если вы удаляете строки в каждой группе, но * не * возвращаете dataframe, то что вы хотите вернуть? –
Ваши данные при сравнении полной таблицы с группами не совпадают. пожалуйста, проясните это. –
Жаль, что я был немного занят, когда писал этот вопрос. Теперь данные верны. Ну, я имею в виду просто удалить строки из групп и сохранить эти группы, как они есть - мне нужно применить несколько фильтров и после каждого применения требуется новая groupby. – jirinovo