pandas group by 求count,然后 having
时间: 2023-08-24 17:06:05 浏览: 257
在 Pandas 中,可以使用 `groupby()` 方法进行分组操作,然后使用 `count()` 方法对每个组进行计数,最后使用 `filter()` 方法进行筛选。
例如,我们有一个数据集 `df`,包含两列 `A` 和 `B`,我们想要按照 `A` 列进行分组,然后过滤掉 `B` 列中计数小于 3 的组,可以按照以下方式实现:
```python
import pandas as pd
df = pd.DataFrame({'A': ['foo', 'bar', 'foo', 'bar', 'foo', 'bar', 'foo', 'foo'],
'B': ['one', 'one', 'two', 'two', 'two', 'one', 'one', 'two']})
result = df.groupby('A').filter(lambda x: len(x) >= 3)
result = result.groupby('A').filter(lambda x: x['B'].count() >= 3)
```
首先,我们使用 `groupby()` 方法按照 `A` 列进行分组,然后使用 `filter()` 方法筛选出计数大于等于 3 的组。接着,我们再次使用 `groupby()` 方法按照 `A` 列进行分组,然后使用 `count()` 方法计算每组中 `B` 列的计数,最后再使用 `filter()` 方法筛选出计数大于等于 3 的组。
需要注意的是,`filter()` 方法返回的是一个新的 DataFrame,而不是原始的 DataFrame。如果需要修改原始的 DataFrame,可以使用 `inplace=True` 参数。同时,`filter()` 方法中的 lambda 函数可以根据具体的需求进行自定义。
阅读全文