Pandas df.append() in Schleife

mit matplotlib, NumPy, pandas, SciPy, SymPy und weiteren mathematischen Programmbibliotheken.
Antworten
naheliegend
User
Beiträge: 439
Registriert: Mittwoch 8. August 2018, 16:42

Hi,

das muss doch auch anders gehen, oder?
Also gerade das mit der Flag. Also es funktioniert, aber sieht komisch aus.

Code: Alles auswählen

flag = True
for j in range(0, anzahl, int(anzahl/3)):
      filename = all_files[j]
      df = read_and_prep_df(filename=filename)
      
      if flag: #im ersten Durchlauf
           df_gesamt = df
           flag = False
      else:
           df_gesamt = df_gesamt.append(df)
 
Danke schonmal .
__backjack__: "Jemand der VB oder PHP kann, der also was Programmieren angeht irgendwo im negativen Bereich liegt (...)"
Benutzeravatar
__blackjack__
User
Beiträge: 14047
Registriert: Samstag 2. Juni 2018, 10:21
Wohnort: 127.0.0.1
Kontaktdaten:

@naheliegend: Erst alle DataFrames in eine Liste einlesen und am Ende mit `pandas.concat()` zusammenfügen.

Statt ``int(anzahl / 3)`` könnte man einfach Ganzzahldivision verwenden. Statt das über einen zusätzlichen, unnötigen Index zu lösen würde man einfach die `all_files`-Liste (eigentlich `all_filenames`) ”slicen”.

Ungetestet:

Code: Alles auswählen

    df_gesamt = pd.concat(
        [
            read_and_prep_df(filename=filename)
            for filename in all_filenames[: anzahl : anzahl // 3]
        ]
    )
“Vir, intelligence has nothing to do with politics!” — Londo Mollari
naheliegend
User
Beiträge: 439
Registriert: Mittwoch 8. August 2018, 16:42

Perfekt, danke dir.
__backjack__: "Jemand der VB oder PHP kann, der also was Programmieren angeht irgendwo im negativen Bereich liegt (...)"
Antworten