Python Pandas: Wie bewegt man eine Zeile in die erste Zeile eines Dataframes?

8

Vorhandener Datenrahmen, der indiziert ist.

%Vor%

Wie verschiebe ich die 3. Reihe in die erste Reihe?

Das sagt erwartetes Ergebnis:

%Vor%

Jetzt sollte die ursprüngliche erste Zeile die zweite Zeile werden.

    
Rex 13.09.2015, 07:44
quelle

4 Antworten

5

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%     
user4322779 13.09.2015, 07:59
quelle
3

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.

%Vor%

Wenn Sie möchten, können Sie Ihren Index auch zurücksetzen.

%Vor%

Alternativ können Sie die Liste einfach mit idx neu indizieren:

%Vor%     
Alexander 13.09.2015 11:49
quelle
2

Das ist nicht elegant, aber funktioniert so weit:

%Vor%

Wenn Sie das wollen ...

    
user3017048 13.09.2015 08:19
quelle
2
%Vor%

Sie können einfach Folgendes tun

%Vor%

oder Sie können Folgendes tun

%Vor%     
Nader Hisham 13.09.2015 08:32
quelle

Tags und Links