Мне нужно небольшое предложение по процедуре с использованием pandas, у меня есть набор данных с двумя столбцами, который выглядит следующим образом:
A 0.4533
B 0.2323
A 1.2343
A 1.2353
B 4.3521
C 3.2113
C 2.1233
.. ...
где первый столбец содержит строки, а второй - плавающие. Глядя на каждую подгруппу, заданную «ключами» 'A','B','C'
, я хотел бы отфильтровать значения в каждой подгруппе, которые отличаются более чем на 20% от минимума каждой подгруппы.
Я пытался сделать следующее:
out = df[df.groupby(stringcol)[floatcol].apply(lambda x: x <= x.min() * 1.2)]
Но я не уверен если при этом будет учитываться глобальный минимум по всему набору данных или минимум по каждой подгруппе, то есть то, что я хочу.
Большое спасибо,
Джеймс
x.min()
— минимальное значение среди групповых значений.спасибо, это следствие операции groupby?
Я не знаю, что вы подразумеваете под «последствием»,
groupby apply
применяет «функцию func по группам». Именно для этого и предназначена эта операция.Хорошо, я просто был озадачен частью .apply, применялась ли она групповым образом или нет. Теперь понятно, спасибо