首页 > 解决方案 > Dataframe groupby和count值满足条件

问题描述

这是我手头的数据框:

df = pd.DataFrame({
    'id': [1,1,1,2,2,3,3],
    'length': [20, 20, 20, 4, 4, 15,15],
    'speed': [17.2,16.5,18, 2.3,2.1,10,9.8]
})

df
    id  length  speed
0   1    20     17.2
1   1    20     16.5
2   1    20     18.0
3   2     4     2.3
4   2     4     2.1
5   3    15     10.0
6   3    15     9.8

我想计算小于 5 的唯一值idlength

df[df['length']<5].groupby('id')['length'].value_counts()
id  length
2   4         2
Name: length, dtype: int64

我如何简单地获得长度低于 5 的总 id?就像是:

df[where df.length<5]
1

标签: pythonpandasdataframe

解决方案


只需nunique在过滤器后使用:

df[df.length < 5].id.nunique()
# 1

推荐阅读