Problem beim löschen von Spalten in Dataframes

mit matplotlib, NumPy, pandas, SciPy, SymPy und weiteren mathematischen Programmbibliotheken.
Antworten
SautaRoc
User
Beiträge: 48
Registriert: Donnerstag 20. September 2018, 13:18

Hallo,

ich habe über pd.merge eine Reihe von Dataframes mit gleichen Spalten zusammengefasst. Das klappt auch wie gewünscht. Wenn man merge nutzt werden werden im Zieldataframe die Spalten immer alternierend bezeichnet:


Spalte1 Spalte 2 Spalte3 Spalte1_x Spalte2_x Spalte3_x Spalte1_y Spalte2_y Spalte3_y.... dann geht es wieder von vorne los Spalte1 Spalte2 usw.
jetzt wollte ich aus diesem Dataframe einzelne Spalten löschen. Über die Spaltenbezeichnung geht es nicht, da sich die Namen wiederholen, ich aber nicht alle doppelten löschen will. Also habe ich es über den Index versucht:

Code: Alles auswählen

merged.drop(merged.columns[[0,2,3]], axis=1, inplace=True)

aber anstatt nur die drei indexierten Spalten zu löschen, wurden auch deren Namensbrüder wiederum gelöscht. Das verstehe ich nicht, der Index sollte das doch exakt definieren. Ich komme hier einfach nicht weiter....

für Tipps wäre ich sehr dankbar.
Benutzeravatar
ThomasL
User
Beiträge: 1366
Registriert: Montag 14. Mai 2018, 14:44
Wohnort: Kreis Unna NRW

schau dir mal an was "merged.columns[[0,2,3]]" dir liefert.
Das sollte, gemäß Beispiel, "Index(['Spalte1', 'Spalte3', 'Spalte2_x'], dtype='object')" sein.
Wenn du jetzt mehrere Spalten mit diesen Headern hast, werden die alle gelöscht.
Du kannst bei .merge einen Parameter suffixes=() angeben, default ist suffixes=('_x', '_y'), daher wiederholen sich deine Spaltennamen wieder
Versuch mal suffixes=('_0', '_1','_2', '_3''_4', '_5''_6', '_7''_8', '_9') oder so viele wie du benötigst.
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
Antworten