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?
Versuche dies
df.drop(df.iloc[:, 1:69], inplace=True, axis=1)
Das funktioniert bei mir
quelle
df.iloc
die 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.).