Durch Dateinamen und Variablen iterieren

Wenn du dir nicht sicher bist, in welchem der anderen Foren du die Frage stellen sollst, dann bist du hier im Forum für allgemeine Fragen sicher richtig.
Antworten
LukasP
User
Beiträge: 2
Registriert: Freitag 12. November 2021, 09:33
Wohnort: Berlin

Hallo zusammen,
ich möchte mehrere Excel Dateien aus einem Ordner einlesen, die sich nur anhand von 2 Zahlen im Dateinamen unterscheiden und folgendermaßen aussehen:

20200101_abc.xlsx
20200102_abc.xlsx
.
.
.

Bisher habe ich das immer händisch gemacht (shame on me) und möchte das nun mit einer Schleife optimieren. Außerdem sollen die pandas-Datasets auch aufsteigend benannt werden. Das habe ich bisher auch händisch gemacht:

import1 = pd.read_excel('20200101_abc.xlsx')
import2 = pd.read_excel('20200102_abc.xlsx')

Mein Problem: Ich habe zwar ein grundlegendes Verständnis von Schleifen, das hier ist mir jedoch etwas zu hoch. Ich habe bereits recherchiert, dass man alle Dateien in einem Ordner auf einmal einlesen kann, ich denke aber das funktioniert nicht mit pd.read. Das mit den Dateinamen könnte eventuell mit String Concatenation funktionieren?

Für eine kleine Starthilfe wäre ich euch sehr dankbar :)

LG Lukas
__deets__
User
Beiträge: 14545
Registriert: Mittwoch 14. Oktober 2015, 14:29

Pfade behandelt man nicht (mehr) als Strings. Sondern mit der pathlib als Objekte. Denn durch string-concatenation wird ganz schnell ein ungueltiger Pfad, wenn zB dem Verzeichnis ein abschliessender Slash fehlt. Und pathlib kann dir mit glob und rglob auch die Eintraege passend zu einem bestimmten Muster geben.
Sirius3
User
Beiträge: 18279
Registriert: Sonntag 21. Oktober 2012, 17:20

Man nummeriert keine Variablennamen; statt dessen benutzt man eine passende Datenstruktur, z.B. eine Liste.

Code: Alles auswählen

from pathlib import Path
importe = [
    pd.read_excel(filename)
    for filename in sorted(Path().glob('*_abc.xlsx'))
]
Antworten