aus df spezielle Spalten löschen

mit matplotlib, NumPy, pandas, SciPy, SymPy und weiteren mathematischen Programmbibliotheken.
Antworten
torsten_156
User
Beiträge: 43
Registriert: Freitag 5. April 2019, 20:10

Hallo,

ich habe ein DataFrame mit 60 Spalten. Zehn Spalten haben absolut unterschiedliche Bezeichnungen. 50 Spalten haben diese Bezeichnung hier:
EINFELD01, EINFELD02, EINFELD03,...., EINFELD50

Und genau diese Spalten möchte ich nun löschen. Ich würde gern so etwas wie ein wildcard nutzen:

Code: Alles auswählen

df.drop('EINFELD*', axis=1)
Aber das geht so leider nicht. Wie stelle ich das am besten an?

VG
Torsten
Benutzeravatar
ThomasL
User
Beiträge: 1385
Registriert: Montag 14. Mai 2018, 14:44
Wohnort: Kreis Unna NRW

eventuell so

Code: Alles auswählen

columns = [f'EINFELD{x:02}' for x in range(1, 51)]
df = df.drop(columns, axis=1)
Ich bin Pazifist und greife niemanden an, auch nicht mit Worten.
Für alle meine Code Beispiele gilt: "There is always a better way."
https://projecteuler.net/profile/Brotherluii.png
Benutzeravatar
__blackjack__
User
Beiträge: 14336
Registriert: Samstag 2. Juni 2018, 10:21
Wohnort: 127.0.0.1
Kontaktdaten:

@torsten_156: Die Methode will eine Liste mit den Labelnamen haben. Die musst Du halt erstellen. Die stecken in `df.columns` und lassen sich da auch simpel mit einer „list comprehension“ rausfiltern. Ungetestet:

Code: Alles auswählen

df = df.drop(columns=[label for label in df.columns if label.startswith("EINFELD")])
„Debugging is twice as hard as writing the code in the first place. Therefore, if you write the code as cleverly as possible, you are, by definition, not smart enough to debug it.“ — Brian W. Kernighan
Antworten