У меня есть панд dataframe df
который выглядит следующим образом:Панды: Группа Имея/Filtering Аварии
| Index | Item | Value |
+---------+------------+-------------+
| 0 | 1024 | 20 |
| 1 | 1024 | 27 |
| 2 | 1024 | 19 |
| 3 | 4096 | 44 |
| ... | ... | ... |
Теперь я могу GroupBy этот dataframe на колонке Item и выполнять некоторые агрегированные на значение:
grouped = df.groupby(df['Item']).agg({'Value':['median', 'mean', 'std', 'count']})
Если теперь я смотрю в этот сгруппированном объект, он выглядит как сложенное dataframe:
grouped.head()
| | Value |
+--------+-----------------------------+
| | median | mean | std | count |
+--------+--------+------+-----+-------+
| Item | | | | |
+--------+--------+------+-----+-------+
| 1024 | 20 | 22.0 | 4.3 | 3 |
| 4096 | 44 | 44.0 | NaN | 1 |
+--------+--------+------+-----+-------+
теперь я хотел бы только фильтровать сгруппированные элементы, которые, например, имеют счетчик> 1, поэтому я попытался следующее:
filtered = grouped.filter(lambda x: x['count'] > 1)
Но я получаю: TypeError: «функция» объект не итерацию
Я также попытался
filtered = grouped.filter(lambda x: x.Value.count > 1)
или
filtered = grouped[grouped.Age.count > 1]
но последний только бросить s KeyError: True
Как я могу добиться этой фильтрации в этом случае, в SQL это будет похоже на создание предложения GROUP BY
/HAVING
, когда я хочу фильтровать агрегированную сгруппированную таблицу в pandas?
Как я могу написать, например, запрос, который возвращает только строки, где медиана == означает?
спасибо.
спасибо за ваш ответ. – Regenschein
@Regenschein благодарит вас за исправление - copy-paste :) – knagaev