2017-06-12 201 views
1

开始排序表:熊猫GROUPBY

Index | A | B | C  | 
0  | A1| 0 | Group 1 | 
1  | A1| 0 | Group 1 | 
2  | A1| 1 | Group 2 | 
3  | A1| 1 | Group 2 | 
4  | A1| 2 | Group 3 | 
5  | A1| 2 | Group 3 | 
6  | A2| 7 | Group 4 | 
7  | A2| 7 | Group 4 | 

返回记录0,1,2,3,6,7

首先我要创建基于列A,B组 然后我只想返回列A组的前两个子组。 我想要为子组返回的所有记录。

非常感谢。

回答

2

使用pd.factorize一个groupby和过滤器内少于2

df[df.groupby('A').B.transform(lambda x: x.factorize()[0]).lt(2)] 
# same as 
# df[df.groupby('A').B.transform(lambda x: x.factorize()[0]) < 2] 

    A B  C 
0 A1 0 Group 1 
1 A1 0 Group 1 
2 A1 1 Group 2 
3 A1 1 Group 2 
6 A2 7 Group 4 
7 A2 7 Group 4 
+0

完美地工作。什么是.lt()? – RMichalowski

+0