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: 14336
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]
        ]
    )
„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
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