2017-06-12 248 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