Reindexing ist wahrscheinlich die optimale Lösung, um die Zeilen in einer offensichtlichen Reihenfolge in eine neue Reihenfolge zu bringen, außer dass es erforderlich sein kann, einen neuen Datenrahmen zu erstellen, der prohibitiv sehr groß sein kann.
Zum Beispiel
%Vor%Nun kann der Index ohne Neuindizierung auf den Bereich (4) zurückgesetzt werden:
%Vor%Es kann auch mit 'Tuple Switching' und Zeilenauswahl als Grundmechanismus und ohne Erstellung eines neuen DataFrames durchgeführt werden. Zum Beispiel:
%Vor%Eine andere In-Place-Methode legt den DataFrame-Index für die gewünschte Reihenfolge fest, sodass z. B. die dritte Zeile den Index 0 usw. erhält und der DataFrame dann an der richtigen Stelle sortiert wird. Es ist in der folgenden Funktion eingekapselt, die davon ausgeht, dass die Zeilen mit einem Bereich (m) für eine positive ganze Zahl m indiziert sind und der DataFrame einfach indiziert ist (kein MultiIndex) wie in dem in der Frage angegebenen Beispiel.
%Vor%Die Argumente von putfirst sind n, was die Ordinalposition der Zeile ist, die in die erste Zeilenposition verschoben werden soll, so dass, wenn die dritte Zeile so verschoben werden soll, n = 3 ist; und df ist der Datenrahmen, der die zu verlagernde Zeile enthält.
Hier ist eine Demo:
%Vor%Um die dritte Zeile in die erste Zeile zu verschieben, können Sie einen Index erstellen, der die Zielzeile auf das erste Element verschiebt. Ich benutze ein bedingtes Listenverständnis, um durch Listen zu verbinden.
Verwenden Sie dann iloc
, um die gewünschten Indexzeilen auszuwählen.
Wenn Sie möchten, können Sie Ihren Index auch zurücksetzen.
%Vor% Alternativ können Sie die Liste einfach mit idx
neu indizieren:
Das ist nicht elegant, aber funktioniert so weit:
%Vor%Wenn Sie das wollen ...
Sie können einfach Folgendes tun
%Vor%oder Sie können Folgendes tun
%Vor%