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中找到了这个谢谢,你说得对,它实际上就在那里,只是在地图上找不到;我将发送一个问题。非常简洁的回答!现在就开始阅读文档。