2017-06-12 7 views
1

Beginnen Sie mit einer sortierten Tabelle:Pandas groupby auf mehrere Werte

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 | 

Returns Aufzeichnungen 0,1,2,3,6,7

Zuerst möchte ich Gruppen erstellen, basierend auf Spalten A und B Dann möchte ich nur die ersten zwei Untergruppen einer Spalte A zurückgegeben. Ich möchte alle Datensätze für die Untergruppe zurückgegeben.

Vielen Dank.

Antwort

2

Verwenden pd.factorize innerhalb eines groupby und Filter für weniger als 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

perfekt funktioniert. Was ist .lt()? – RMichalowski

+0