Hallo Leute,
ich möchte aus einer xlsx Datei die Zellen mit "Unnamed: x" (x ist dabei eine Zahl) mit einer "0" umtauschen, aber habe ein paar Schwierigkeiten. Als Ansatz möchte ich die .rename Funktion verwenden, aber kam bis jetzt nicht zum gewünschten Ergebnis. Soll ich eurer Meinung nach den Ansatz ändern oder geht es nicht ohne weiteres. Ich würde mich über jede hilfreiche Antwort freuen.
Bestimmte Zellen einer xlsx Datei mit "0" umtauschen.
-
- User
- Beiträge: 10
- Registriert: Freitag 10. September 2021, 10:09
Zuletzt geändert von python..neuling am Montag 13. September 2021, 18:25, insgesamt 1-mal geändert.
Wie sieht denn jetzt Dein Code zum Lesen der Exceltabellen aus und wie sollen die Dataframe aussehen?
Beim Einlesen solltest Du schon das richtige Format haben, überspringen von Zeilen geht bei read_excel per skiprow.
Beim Einlesen solltest Du schon das richtige Format haben, überspringen von Zeilen geht bei read_excel per skiprow.
-
- User
- Beiträge: 10
- Registriert: Freitag 10. September 2021, 10:09
Danke für die Antwort @Sirius3. Ich habe meine Frage geändert, weil die erste Frage geklärt wurde (hatte einen ziemlich dummen Schreibfehler drin haha).
-
- User
- Beiträge: 10
- Registriert: Freitag 10. September 2021, 10:09
Ich habe es inzwischen hinbekommen. Mein Code ist aber etwas zu lang (Lösung nicht sehr elegant).
Die Kopfzeile sah vorher so aus: https://imagizer.imageshack.com/img924/8691/3yGWTT.png
Durch mein Code sind die Unnamed Zellen geleert worden. @Sirius3 Hier ist mein Code:
name3 = pd.read_excel('Gruppenauswertung_Kurs_1.xlsx')
name4 = name3.replace('Unnamed: 1_level_1', '', regex=True)
name4.to_excel('Gruppenauswertung_Kurs_1.xlsx', index=False)
name4 = pd.read_excel('Gruppenauswertung_Kurs_1.xlsx')
name5 = name4.replace('Unnamed: 1_level_2', '', regex=True)
name5.to_excel('Gruppenauswertung_Kurs_1.xlsx', index=False)
name5 = pd.read_excel('Gruppenauswertung_Kurs_1.xlsx')
name6 = name5.replace('Unnamed: 2_level_1', '', regex=True)
name6.to_excel('Gruppenauswertung_Kurs_1.xlsx', index=False)
name6 = pd.read_excel('Gruppenauswertung_Kurs_1.xlsx')
name7 = name6.replace('Unnamed: 2_level_2', '', regex=True)
name7.to_excel('Gruppenauswertung_Kurs_1.xlsx', index=False)
name7 = pd.read_excel('Gruppenauswertung_Kurs_1.xlsx')
name8 = name7.replace('Unnamed: 4_level_3', '', regex=True)
name8.to_excel('Gruppenauswertung_Kurs_1.xlsx', index=False)
name8 = pd.read_excel('Gruppenauswertung_Kurs_1.xlsx')
name9 = name8.replace('Unnamed: 5_level_3', '', regex=True)
name9.to_excel('Gruppenauswertung_Kurs_1.xlsx', index=False)
name9 = pd.read_excel('Gruppenauswertung_Kurs_1.xlsx')
name10 = name9.replace('Unnamed: 6_level_3', '', regex=True)
name10.to_excel('Gruppenauswertung_Kurs_1.xlsx', index=False)
name10 = pd.read_excel('Gruppenauswertung_Kurs_1.xlsx')
name11 = name10.replace('Unnamed: 7_level_3', '', regex=True)
name11.to_excel('Gruppenauswertung_Kurs_1.xlsx', index=False)
name11= pd.read_excel('Gruppenauswertung_Kurs_1.xlsx')
name12 = name11.replace('Unnamed: 8_level_3', '', regex=True)
name12.to_excel('Gruppenauswertung_Kurs_1.xlsx', index=False)
name12 = pd.read_excel('Gruppenauswertung_Kurs_1.xlsx')
name13 = name12.replace('Unnamed: 9_level_3', '', regex=True)
name13.to_excel('Gruppenauswertung_Kurs_1.xlsx', index=False)
name13 = pd.read_excel('Gruppenauswertung_Kurs_1.xlsx')
name14 = name13.replace('Unnamed: 10_level_3', '', regex=True)
name14.to_excel('Gruppenauswertung_Kurs_1.xlsx', index=False)
name14 = pd.read_excel('Gruppenauswertung_Kurs_1.xlsx')
name15 = name14.replace('Unnamed: 11_level_3', '', regex=True)
name15.to_excel('Gruppenauswertung_Kurs_1.xlsx', index=False)
name15 = pd.read_excel('Gruppenauswertung_Kurs_1.xlsx')
name16 = name15.replace('Unnamed: 12_level_1', '', regex=True)
name16.to_excel('Gruppenauswertung_Kurs_1.xlsx', index=False)
name16 = pd.read_excel('Gruppenauswertung_Kurs_1.xlsx')
name17 = name16.replace('Unnamed: 12_level_2', '', regex=True)
name17.to_excel('Gruppenauswertung_Kurs_1.xlsx', index=False)
name17 = pd.read_excel('Gruppenauswertung_Kurs_1.xlsx')
name18 = name17.replace('Unnamed: 13_level_1', '', regex=True)
name18.to_excel('Gruppenauswertung_Kurs_1.xlsx', index=False)
name18 = pd.read_excel('Gruppenauswertung_Kurs_1.xlsx')
name19 = name18.replace('Unnamed: 13_level_2', '', regex=True)
name19.to_excel('Gruppenauswertung_Kurs_1.xlsx', index=False)
name19 = pd.read_excel('Gruppenauswertung_Kurs_1.xlsx')
name20 = name19.replace('Unnamed: 14_level_1', '', regex=True)
name20.to_excel('Gruppenauswertung_Kurs_1.xlsx', index=False)
name20 = pd.read_excel('Gruppenauswertung_Kurs_1.xlsx')
name21 = name20.replace('Unnamed: 14_level_2', '', regex=True)
name21.to_excel('Gruppenauswertung_Kurs_1.xlsx', index=False)
name22 = name21.rename(columns={'Unnamed: 0.1.1':''})
name22.to_excel('Gruppenauswertung_Kurs_1.xlsx')
name23 = name22.rename(columns={'Unnamed: 1':''})
name23.to_excel('Gruppenauswertung_Kurs_1.xlsx')
name24 = name23.rename(columns={'Unnamed: 4':''})
name24.to_excel('Gruppenauswertung_Kurs_1.xlsx')
name25 = name24.rename(columns={'Unnamed: 6':''})
name25.to_excel('Gruppenauswertung_Kurs_1.xlsx')
name26 = name25.rename(columns={'Unnamed: 8':''})
name26.to_excel('Gruppenauswertung_Kurs_1.xlsx')
name27 = name26.rename(columns={'Unnamed: 10':''})
name27.to_excel('Gruppenauswertung_Kurs_1.xlsx')
name28 = name27.rename(columns={'Unnamed: 11':''})
name28.to_excel('Gruppenauswertung_Kurs_1.xlsx')
name29 = name28.rename(columns={'Unnamed: 12':''})
name29.to_excel('Gruppenauswertung_Kurs_1.xlsx')
name30 = name27.rename(columns={'Unnamed: 13':''})
name30.to_excel('Gruppenauswertung_Kurs_1.xlsx', index=False)
Gibt es eine andere (kürzere) Möglichkeit die Unnamed Zellen zu leeren? Ansonsten würde ich es so stehen lassen. Wäre für jeden Tipp dankbar.
Die Kopfzeile sah vorher so aus: https://imagizer.imageshack.com/img924/8691/3yGWTT.png
Durch mein Code sind die Unnamed Zellen geleert worden. @Sirius3 Hier ist mein Code:
name3 = pd.read_excel('Gruppenauswertung_Kurs_1.xlsx')
name4 = name3.replace('Unnamed: 1_level_1', '', regex=True)
name4.to_excel('Gruppenauswertung_Kurs_1.xlsx', index=False)
name4 = pd.read_excel('Gruppenauswertung_Kurs_1.xlsx')
name5 = name4.replace('Unnamed: 1_level_2', '', regex=True)
name5.to_excel('Gruppenauswertung_Kurs_1.xlsx', index=False)
name5 = pd.read_excel('Gruppenauswertung_Kurs_1.xlsx')
name6 = name5.replace('Unnamed: 2_level_1', '', regex=True)
name6.to_excel('Gruppenauswertung_Kurs_1.xlsx', index=False)
name6 = pd.read_excel('Gruppenauswertung_Kurs_1.xlsx')
name7 = name6.replace('Unnamed: 2_level_2', '', regex=True)
name7.to_excel('Gruppenauswertung_Kurs_1.xlsx', index=False)
name7 = pd.read_excel('Gruppenauswertung_Kurs_1.xlsx')
name8 = name7.replace('Unnamed: 4_level_3', '', regex=True)
name8.to_excel('Gruppenauswertung_Kurs_1.xlsx', index=False)
name8 = pd.read_excel('Gruppenauswertung_Kurs_1.xlsx')
name9 = name8.replace('Unnamed: 5_level_3', '', regex=True)
name9.to_excel('Gruppenauswertung_Kurs_1.xlsx', index=False)
name9 = pd.read_excel('Gruppenauswertung_Kurs_1.xlsx')
name10 = name9.replace('Unnamed: 6_level_3', '', regex=True)
name10.to_excel('Gruppenauswertung_Kurs_1.xlsx', index=False)
name10 = pd.read_excel('Gruppenauswertung_Kurs_1.xlsx')
name11 = name10.replace('Unnamed: 7_level_3', '', regex=True)
name11.to_excel('Gruppenauswertung_Kurs_1.xlsx', index=False)
name11= pd.read_excel('Gruppenauswertung_Kurs_1.xlsx')
name12 = name11.replace('Unnamed: 8_level_3', '', regex=True)
name12.to_excel('Gruppenauswertung_Kurs_1.xlsx', index=False)
name12 = pd.read_excel('Gruppenauswertung_Kurs_1.xlsx')
name13 = name12.replace('Unnamed: 9_level_3', '', regex=True)
name13.to_excel('Gruppenauswertung_Kurs_1.xlsx', index=False)
name13 = pd.read_excel('Gruppenauswertung_Kurs_1.xlsx')
name14 = name13.replace('Unnamed: 10_level_3', '', regex=True)
name14.to_excel('Gruppenauswertung_Kurs_1.xlsx', index=False)
name14 = pd.read_excel('Gruppenauswertung_Kurs_1.xlsx')
name15 = name14.replace('Unnamed: 11_level_3', '', regex=True)
name15.to_excel('Gruppenauswertung_Kurs_1.xlsx', index=False)
name15 = pd.read_excel('Gruppenauswertung_Kurs_1.xlsx')
name16 = name15.replace('Unnamed: 12_level_1', '', regex=True)
name16.to_excel('Gruppenauswertung_Kurs_1.xlsx', index=False)
name16 = pd.read_excel('Gruppenauswertung_Kurs_1.xlsx')
name17 = name16.replace('Unnamed: 12_level_2', '', regex=True)
name17.to_excel('Gruppenauswertung_Kurs_1.xlsx', index=False)
name17 = pd.read_excel('Gruppenauswertung_Kurs_1.xlsx')
name18 = name17.replace('Unnamed: 13_level_1', '', regex=True)
name18.to_excel('Gruppenauswertung_Kurs_1.xlsx', index=False)
name18 = pd.read_excel('Gruppenauswertung_Kurs_1.xlsx')
name19 = name18.replace('Unnamed: 13_level_2', '', regex=True)
name19.to_excel('Gruppenauswertung_Kurs_1.xlsx', index=False)
name19 = pd.read_excel('Gruppenauswertung_Kurs_1.xlsx')
name20 = name19.replace('Unnamed: 14_level_1', '', regex=True)
name20.to_excel('Gruppenauswertung_Kurs_1.xlsx', index=False)
name20 = pd.read_excel('Gruppenauswertung_Kurs_1.xlsx')
name21 = name20.replace('Unnamed: 14_level_2', '', regex=True)
name21.to_excel('Gruppenauswertung_Kurs_1.xlsx', index=False)
name22 = name21.rename(columns={'Unnamed: 0.1.1':''})
name22.to_excel('Gruppenauswertung_Kurs_1.xlsx')
name23 = name22.rename(columns={'Unnamed: 1':''})
name23.to_excel('Gruppenauswertung_Kurs_1.xlsx')
name24 = name23.rename(columns={'Unnamed: 4':''})
name24.to_excel('Gruppenauswertung_Kurs_1.xlsx')
name25 = name24.rename(columns={'Unnamed: 6':''})
name25.to_excel('Gruppenauswertung_Kurs_1.xlsx')
name26 = name25.rename(columns={'Unnamed: 8':''})
name26.to_excel('Gruppenauswertung_Kurs_1.xlsx')
name27 = name26.rename(columns={'Unnamed: 10':''})
name27.to_excel('Gruppenauswertung_Kurs_1.xlsx')
name28 = name27.rename(columns={'Unnamed: 11':''})
name28.to_excel('Gruppenauswertung_Kurs_1.xlsx')
name29 = name28.rename(columns={'Unnamed: 12':''})
name29.to_excel('Gruppenauswertung_Kurs_1.xlsx')
name30 = name27.rename(columns={'Unnamed: 13':''})
name30.to_excel('Gruppenauswertung_Kurs_1.xlsx', index=False)
Gibt es eine andere (kürzere) Möglichkeit die Unnamed Zellen zu leeren? Ansonsten würde ich es so stehen lassen. Wäre für jeden Tipp dankbar.
Wenn man anfängt, Variablennamen durchzunummerieren macht man etwas falsch. Hier stellt sich die Frage, warum man überhaupt unterschiedliche Variablennamen braucht.
Jetzt schreibst Du immer die Excel-Tabelle, nur um sie sofort wieder einzulesen. Das kann man sich sparen. Später läßt Du dann das Lesen weg (warum auch immer) und schreibst nur noch.
Jetzt hast Du ein sehr regelmäßiges Muster, und nutzt aus irgendeinem Grund eh schon reguläre Ausdrücke. rename kann man mehrere Spalten gleichzeitig übergeben.
Die Spaltennamen folgen auch einem Muster, das man ausnutzen könnte. Das ganze noch inplace, da Du mit dem alten Dataframe nichts mehr anfängst.
Zum Schluß der Variable noch einen ordentlichen Namen geben (sollte eigentlich das erste sein):
Nachdem die Exceltabelle nun aufgeräumt ist, stellt sich aber zu allererst die Frage, warum sieht die Exceltabelle überhaupt so aus? Woher kommen die Daten, wer schreibt sie in diesem Format? Warum ändert derjenige, der das zuerst schreibt nicht seinen Code?
Code: Alles auswählen
name = pd.read_excel('Gruppenauswertung_Kurs_1.xlsx')
name = name.replace('Unnamed: 1_level_1', '', regex=True)
name.to_excel('Gruppenauswertung_Kurs_1.xlsx', index=False)
name = pd.read_excel('Gruppenauswertung_Kurs_1.xlsx')
name = name.replace('Unnamed: 1_level_2', '', regex=True)
name.to_excel('Gruppenauswertung_Kurs_1.xlsx', index=False)
name = pd.read_excel('Gruppenauswertung_Kurs_1.xlsx')
name = name.replace('Unnamed: 2_level_1', '', regex=True)
name.to_excel('Gruppenauswertung_Kurs_1.xlsx', index=False)
...
Code: Alles auswählen
name = pd.read_excel('Gruppenauswertung_Kurs_1.xlsx')
name = name.replace('Unnamed: 1_level_1', '', regex=True)
name = name.replace('Unnamed: 1_level_2', '', regex=True)
name = name.replace('Unnamed: 2_level_1', '', regex=True)
name = name.replace('Unnamed: 2_level_2', '', regex=True)
name = name.replace('Unnamed: 4_level_3', '', regex=True)
name = name.replace('Unnamed: 5_level_3', '', regex=True)
name = name.replace('Unnamed: 6_level_3', '', regex=True)
name = name.replace('Unnamed: 7_level_3', '', regex=True)
name = name.replace('Unnamed: 8_level_3', '', regex=True)
name = name.replace('Unnamed: 9_level_3', '', regex=True)
name = name.replace('Unnamed: 10_level_3', '', regex=True)
name = name.replace('Unnamed: 11_level_3', '', regex=True)
name = name.replace('Unnamed: 12_level_1', '', regex=True)
name = name.replace('Unnamed: 12_level_2', '', regex=True)
name = name.replace('Unnamed: 13_level_1', '', regex=True)
name = name.replace('Unnamed: 13_level_2', '', regex=True)
name = name.replace('Unnamed: 14_level_1', '', regex=True)
name = name.replace('Unnamed: 14_level_2', '', regex=True)
name = name.rename(columns={'Unnamed: 0.1.1':''})
name = name.rename(columns={'Unnamed: 1':''})
name = name.rename(columns={'Unnamed: 4':''})
name = name.rename(columns={'Unnamed: 6':''})
name = name.rename(columns={'Unnamed: 8':''})
name = name.rename(columns={'Unnamed: 10':''})
name = name.rename(columns={'Unnamed: 11':''})
name = name.rename(columns={'Unnamed: 12':''})
name = name.rename(columns={'Unnamed: 13':''})
name.to_excel('Gruppenauswertung_Kurs_1.xlsx', index=False)
Code: Alles auswählen
name = pd.read_excel('Gruppenauswertung_Kurs_1.xlsx')
name = name.replace(r'Unnamed: \d+_level_\d+', '', regex=True)
name = name.rename(columns={'Unnamed: 0.1.1':'', 'Unnamed: 1':'', 'Unnamed: 4':'',
'Unnamed: 6':'', 'Unnamed: 8':'', 'Unnamed: 10':'', 'Unnamed: 11':'',
'Unnamed: 12':'', 'Unnamed: 13':''})
name.to_excel('Gruppenauswertung_Kurs_1.xlsx', index=False)
Zum Schluß der Variable noch einen ordentlichen Namen geben (sollte eigentlich das erste sein):
Code: Alles auswählen
gruppenauswertung = pd.read_excel('Gruppenauswertung_Kurs_1.xlsx')
gruppenauswertung.replace(r'Unnamed: \d+_level_\d+', '', regex=True, inplace=True)
gruppenauswertung.columns = ['' if column.startswith('Unnamed:') else column for column in gruppenauswertung.columns]
gruppenauswertung.to_excel('Gruppenauswertung_Kurs_1.xlsx', index=False)