Сохранение небольших подкадров данных, содержащих все значения, связанные с определенным «ключом»

avatar
James Arten
1 июля 2021 в 15:47
22
0
0

Мне нужно небольшое предложение по процедуре с использованием 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)]

Но я не уверен если при этом будет учитываться глобальный минимум по всему набору данных или минимум по каждой подгруппе, то есть то, что я хочу.

Большое спасибо,

Джеймс

Источник
Henry Ecker
1 июля 2021 в 15:54
2

x.min() — минимальное значение среди групповых значений.

James Arten
1 июля 2021 в 15:56
0

спасибо, это следствие операции groupby?

Henry Ecker
1 июля 2021 в 15:57
0

Я не знаю, что вы подразумеваете под «последствием», groupby apply применяет «функцию func по группам». Именно для этого и предназначена эта операция.

James Arten
1 июля 2021 в 16:00
1

Хорошо, я просто был озадачен частью .apply, применялась ли она групповым образом или нет. Теперь понятно, спасибо

Ответы (0)