Ich denke, das sollte einfach sein, aber ich habe ein paar Ideen ausprobiert und keine davon hat funktioniert:
last_row = len(DF)
DF = DF.drop(DF.index[last_row]) #<-- fail!
Ich habe versucht, negative Indizes zu verwenden, aber das führte auch zu Fehlern. Ich muss immer noch etwas Grundlegendes falsch verstehen.
DF = DF[:-1]
?Antworten:
So löschen Sie die letzten n Zeilen:
Auf die gleiche Weise können Sie die ersten n Zeilen löschen:
quelle
Dabei ist n die letzte Anzahl von Zeilen, die gelöscht werden sollen.
So löschen Sie die letzte Zeile:
quelle
Da die Indexpositionierung in Python auf 0 basiert, befindet sich
index
an der entsprechenden Stelle kein Elementlen(DF)
. Das muss seinlast_row = len(DF) - 1
:Es ist jedoch viel einfacher, nur zu schreiben
DF[:-1]
.quelle
Überrascht brachte niemand dieses Thema zur Sprache:
Das Ausführen eines Geschwindigkeitstests auf einem DataFrame mit 1000 Zeilen zeigt, dass das Schneiden und
head
/tail
oder ~ 6-mal schneller ist als die Verwendung vondrop
:quelle
head()
undtail()
eine schaffen Ansicht währenddrop()
tatsächlich Repräsentation im Speicher ändert (entweder inplace Modifikation oder erstellt eine völlig neue Datenrahmen). Ich habe das nicht in Dokumenten nachgeschlagen, bitte jemand. (Wenn das der Unterschied ist: gute Erklärung für Perf Diff, und man muss sorgfältig zwischen ihnen wählen) /head
,tail
unddrop
alle geben eine Ansicht zurück, obwohl es wahr ist, dassdrop
Sie die Option haben, den ursprünglichen Datenrahmen an Ort und Stelle zu ändern.Die Ausgabe von Statistiken:
benutz einfach
skipfooter=1
Ausgabe von stats_2
quelle
drop gibt ein neues Array zurück, weshalb es im og-Post erstickt ist. Ich hatte eine ähnliche Anforderung, einige Spaltenüberschriften umzubenennen und einige Zeilen aufgrund einer schlecht geformten CSV-Datei zu löschen, die in Dataframe konvertiert wurde. Nachdem ich diesen Beitrag gelesen hatte, verwendete ich:
und es hat großartig funktioniert, wie Sie an den beiden auskommentierten Zeilen oben sehen können. Ich habe die drop. () -Methode ausprobiert und sie funktioniert, ist aber nicht so cool und lesbar wie die Verwendung von [n: -n]. Ich hoffe, das hilft jemandem, danke.
quelle
Bei komplexeren DataFrames mit einem Multi-Index (z. B. "Stock" und "Date"), bei denen die letzte Zeile für jeden Stock entfernt werden soll, nicht nur die letzte Zeile des letzten Stocks, lautet die Lösung:
Da der
groupby()
Multi-Index um eine zusätzliche Ebene erweitert wird, lassen wir ihn am Ende einfach mit fallenreset_index()
. Der resultierende df behält den gleichen Typ von Multi-Index wie vor der Operation bei.quelle