Löschen Sie mehrere Spalten in Pandas


72

Ich versuche, mehrere Spalten (Spalte 2 und 70 in meinem Datensatz, indiziert als 1 bzw. 69) nach Indexnummer in einem Pandas-Datenrahmen mit dem folgenden Code zu löschen:

df.drop([df.columns[[1, 69]]], axis=1, inplace=True)

Ich erhalte folgende Fehlermeldung:

TypeError: unhashable type: 'Index'

Und in meinem Code wird [1, 69] hervorgehoben und sagt:

Expected type 'Integral', got 'list[int]' instead

Der folgende Code macht das, was ich möchte, erfolgreich, aber in zwei Zeilen sich wiederholenden Codes (zuerst das Löschen des Spaltenindex 69, dann 1 und die Reihenfolge sind wichtig, da das Löschen früherer Spalten den Index späterer Spalten ändert). Ich dachte, ich könnte mehr als einen Spaltenindex einfach als Liste angeben, aber vielleicht habe ich oben etwas falsch gemacht?

df.drop([df.columns[69]], axis=1, inplace=True)
df.drop([df.columns[1]], axis=1, inplace=True)

Gibt es eine Möglichkeit, dies in einer Zeile zu tun, ähnlich wie beim ersten Codefragment oben?

Antworten:


104

Sie müssen es nicht in eine Liste mit einschließen, sondern [..]nur die Unterauswahl des Spaltenindex angeben:

df.drop(df.columns[[1, 69]], axis=1, inplace=True)

da das Indexobjekt bereits als listenartig angesehen wird.


1
Das funktioniert, danke! In PyCharm wird immer noch die [1, 69] hervorgehoben und sagt: Erwarteter Typ 'Integral', stattdessen 'Liste [int]' - Na ja. PyCharm muss das beheben, aber zumindest ist der Code solide.
Lukewitmer

1
Ah, du meinst, dass es einen solchen Fehler in der statischen Analyse gibt? (nicht, wenn Sie den Code ausführen) In der Tat ist das ein Fehler in dem Linter, der in PyCharm für die statische Analyse verwendet wird
joris

19
Hinweis df.columns [1:69] kann für die Spalten 2-70 verwendet werden.
Lothilius

17

Versuche dies

df.drop(df.iloc[:, 1:69], inplace=True, axis=1)

Das funktioniert bei mir


3
Für neuere Benutzer empfehle ich diese Antwort, da Sie dadurch gezwungen werden, mit der Positionsindizierung zu arbeiten, df.ilocdie in vielen anderen Fragen angezeigt wird, die eine Spalte oder Zeile an einer bestimmten Position (erste, letzte, n-te, dazwischen) ausführen sollen i-te und j-te usw.).
blue_chip
Durch die Nutzung unserer Website bestätigen Sie, dass Sie unsere Cookie-Richtlinie und Datenschutzrichtlinie gelesen und verstanden haben.
Licensed under cc by-sa 3.0 with attribution required.