Ich möchte eine Spalte in einem Pandas verschieben DataFrame
, konnte jedoch aus der Dokumentation keine Methode finden, ohne den gesamten DF neu zu schreiben. Weiß jemand, wie es geht? DataFrame:
## x1 x2
##0 206 214
##1 226 234
##2 245 253
##3 265 272
##4 283 291
Gewünschte Ausgabe:
## x1 x2
##0 206 nan
##1 226 214
##2 245 234
##3 265 253
##4 283 272
##5 nan 291
Antworten:
quelle
df['x2'] = np.roll(df['x2'], 1)
Sie müssen
df.shift
hier verwenden.df.shift(i)
verschiebt den gesamten Datenrahmen umi
Einheiten nach unten.Also für
i = 1
:Eingang:
Ausgabe:
Führen Sie dieses Skript aus, um die erwartete Ausgabe zu erhalten:
quelle
Definieren wir den Datenrahmen aus Ihrem Beispiel durch
Dann können Sie den Index der zweiten Spalte um manipulieren
und schließlich die einzelnen Spalten wieder kombinieren
Vielleicht nicht schnell, aber einfach zu lesen. Ziehen Sie in Betracht, Variablen für die Spaltennamen und die tatsächlich erforderliche Verschiebung festzulegen.
Bearbeiten: Im Allgemeinen ist eine Verschiebung möglich, indem,
df[2].shift(1)
wie bereits veröffentlicht, die Übertragung jedoch abgeschnitten wird.quelle
Wenn Sie die Spalten nicht verlieren möchten, die Sie über das Ende Ihres Datenrahmens hinaus verschieben, fügen Sie einfach zuerst die erforderliche Nummer hinzu:
quelle
Ich nehme Importe an
NaN, NaN,...
Fügen Sie zuerst eine neue Zeile mit am Ende von DataFrame (df
) hinzu.Es wird ein neuer DF df2 erstellt. Vielleicht gibt es einen eleganteren Weg, aber das funktioniert.
Jetzt können Sie es verschieben:
quelle
Beim Versuch, ein persönliches und ähnliches Problem zu beantworten, habe ich auf Pandas Doc gefunden, was meiner Meinung nach diese Frage beantworten würde:
Ich hoffe, zukünftige Fragen in dieser Angelegenheit zu helfen.
quelle
So mache ich es:
Grundsätzlich generiere ich einen leeren Datenrahmen mit dem gewünschten Index und verkette sie dann einfach miteinander. Aber ich würde dies wirklich gerne als Standardfunktion bei Pandas sehen, deshalb habe ich eine Verbesserung für Pandas vorgeschlagen.
quelle