Pandas DataFrameGroupBy的整个组的条件筛选器

Pandas DataFrameGroupBy的整个组的条件筛选器,pandas,Pandas,如果我有以下数据 >>> data = pd.DataFrame({'day': [1, 1, 1, 1, 2, 2, 2, 2, 3, 4], 'hour':[4, 5, 6, 7, 4, 5, 6, 7, 4, 7]}) >>> data day hour 0 1 4 1 1 5 2 1 6 3 1 7 4 2 4 5 2 5 6 2 6 7

如果我有以下数据

>>> data = pd.DataFrame({'day': [1, 1, 1, 1, 2, 2, 2, 2, 3, 4], 
'hour':[4, 5, 6, 7, 4, 5, 6, 7, 4, 7]})
>>> data
   day  hour
0    1     4
1    1     5
2    1     6
3    1     7
4    2     4
5    2     5
6    2     6
7    2     7
8    3     4
9    4     7
我只想保留
hour
有4个唯一值的天数,然后我会考虑这样做

>>> data.groupby('day').apply(lambda x: x[x['hour'].nunique() == 4])
但这将返回
keyrerror:True

我希望得到这个

>>> data
   day  hour
0    1     4
1    1     5
2    1     6
3    1     7
4    2     4
5    2     5
6    2     6
7    2     7

其中我们看到,
day==3
day==4
已被过滤,因为按天分组时,它们没有4个唯一的
hour
值。我在规模上做这件事,所以简单地过滤
(day==3)和(day==4)
不是一个选项。我认为分组将是一个很好的方法,但不能让它工作。任何人都有将函数应用于
DataFrameGroupBy

的经验,我认为您实际上需要
过滤数据:

>>> data.groupby('day').filter(lambda x: x['hour'].nunique() == 4)
   day  hour
0    1     4
1    1     5
2    1     6
3    1     7
4    2     4
5    2     5
6    2     6
7    2     7

是的,
filter
是我所需要的。我在docs(0.20.1)@spies006中找到了这个谢谢,你说得对,它实际上就在那里,只是在地图上找不到;我将发送一个问题。非常简洁的回答!现在就开始阅读文档。