pandas group by后 having
时间: 2023-08-24 17:04:55 浏览: 160
在 Pandas 中,可以使用 `groupby` 方法对 DataFrame 进行分组操作。对于分组后的结果,可以使用 `having` 条件对分组进行筛选。
具体来说,可以在 `groupby` 后使用 `filter` 方法,并传入一个函数,函数中可以使用 `having` 条件进行筛选。例如,假设有一个 DataFrame `df`,其中包含 `name` 和 `score` 两列,可以按照 `name` 进行分组,并筛选出得分高于平均值的分组:
```python
import pandas as pd
df = pd.DataFrame({
'name': ['Alice', 'Bob', 'Alice', 'Bob', 'Charlie', 'Charlie'],
'score': [70, 80, 90, 85, 75, 80]
})
grouped = df.groupby('name').filter(lambda x: x['score'].mean() > 80)
print(grouped)
```
输出:
```
name score
2 Alice 90
3 Bob 85
4 Charlie 75
5 Charlie 80
```
在上面的例子中,`filter` 方法传入了一个 lambda 函数,该函数对分组后的每个子 DataFrame 进行判断,如果该子 DataFrame 的 `score` 列的平均值大于 80,则返回 True,否则返回 False。最终,`filter` 方法返回一个新的 DataFrame,其中只包含符合条件的分组。
阅读全文