Python: Pandas - Lösche die erste Zeile nach Gruppe

7

Ich habe den folgenden großen Datenrahmen ( df ), der so aussieht:

%Vor%

Frage: Wie kann die erste Zeile jeder ID am effizientesten gelöscht (oder entfernt) werden? Ich will das:

%Vor%

Ich kann eine Schleife über jedes einzelne ID machen und die erste Zeile entfernen, aber ich glaube, das ist nicht sehr effizient.

    
Plug4 05.07.2015, 00:10
quelle

2 Antworten

10

Sie könnten groupby/transform verwenden, um eine boolesche Maske zu erstellen, die für die gewünschten Zeilen True und für die Zeilen, die Sie nicht möchten, False ist. Sobald Sie eine solche boolesche Maske haben, können Sie den Sub-DataFrame mit df.loc[mask] :

auswählen %Vor%

ergibt

%Vor%

Da Sie an Effizienz interessiert sind, ist hier ein Benchmark:

%Vor%

Berichte

%Vor%     
unutbu 05.07.2015, 00:44
quelle
8

Ein anderer Zeilencode ist df.groupby('ID').apply(lambda group: group.iloc[1:, 1:])

%Vor%     
Jianxun Li 05.07.2015 00:47
quelle

Tags und Links