Seite 1 von 1

for schleife- read csv file in for schleife and create a dataframe

Verfasst: Freitag 22. Dezember 2017, 10:16
von hiasit00
Hallo Leute,

ich habe mir eine For-Schleife aufgebaut die ersteinmal frei csv file "nacheinander" lesen soll und relevante Werte in ein Dataframe einfügen soll.
Meine Schleife klappt zwar gut aber ich erhalte im Dataframe leider nur die aus der zuletzt gelesenen csv file die Werte. Alle anderen aus den zwei vorherigen verschwinden. Wie kann ich dies lösen? Ist eine weitere Schleife sinnvoll? oder muss ich es mit einer Methode lösen die in das selbe Dataframe beim jeden lesen des Csv files schreibt.

mein bisheriger Code sieht so aus:

Code: Alles auswählen



import pandas as pd
import glob
import numpy as np
import gc

dir='Z:/home/csv_files'
filenames = glob.glob(dir + "/*.csv")


for filename in filenames[:3]:
    df=pd.read_csv(filename)
    print(df.head())
    
    data_actual=df[['time_stamp','scrdev_pupmp (hpa)','time_vector (ms)','coscr_stsub ()']] 
        
    P0=data_actual['Druck)'][(data_actual['timer']==32) &(data_actual['timer'].shift(-1)==3)]
    P1=data_actual['Druck)'][(data_actual['timer']==9) &(data_actual['timer'].shift(-1)==36)]
    P2=data_actual['Druck)'][(data_actual['timer']==3) &(data_actual['timer'].shift(-1)==9)]
    P3=data_actual['Druck)'][(data_actual['timer']==1) &(data_actual['timer'].shift(-1)==5)]
   
    P=[P0,P1,P2,P3,P4]
    Pvalues=[ "P0","P1","P3", "P3", "P4"]
    P_frame=pd.DataFrame(P,index=Pvalues)


das klappt alles super nur die Schleife liest die Files ein ohne die reingeschriebenen Werte in das Dataframe zu behalten. (Oder er schreibt nur das letzte eingelesene csv File).

Hoffentlich könnt ihr mir weiterhelfe.

Vielen Dank :)

Re: for schleife- read csv file in for schleife and create a dataframe

Verfasst: Freitag 22. Dezember 2017, 11:28
von Sirius3
@hiasit00: den Import von `gc` brauchst Du nicht und wirst Du auch nie brauchen. Du mußt dir alle DataFrames in einer Liste merken, und sie nach der Schleife zu einem concatenieren.

Re: for schleife- read csv file in for schleife and create a dataframe

Verfasst: Freitag 22. Dezember 2017, 12:46
von hiasit00
Sirius3 hat geschrieben:@hiasit00: den Import von `gc` brauchst Du nicht und wirst Du auch nie brauchen. Du mußt dir alle DataFrames in einer Liste merken, und sie nach der Schleife zu einem concatenieren.

Vielen Dank für deine Rückmeldung :)

das Problem ist dass ich ja nicht mal für jedes eingelesene File ein dataframe mit meiner Schleife erstellen kann. Es wird leider nichts gemerkt..Das war ja meine Frage wie ich dies machen kann...

oder meinst du was anderes.. habe etwas mit tolist() gefunden wäre dies der richtige Ansatz.

Ein Vorschlag?? Vielen lieben Dank im Voraus...

Re: for schleife- read csv file in for schleife and create a dataframe

Verfasst: Freitag 22. Dezember 2017, 14:41
von __deets__
Du erzeugst in der for-Schleife einen dataframe. Und dann schmeißt du ihn weg, weil du in der nächsten iteration einen neuen erzeugst, unter dem alten Namen. Und der letzte bleibt dann übrig :K

Wenn du alle willst, musst du sie in einer Liste aufsammeln. Und danach zusammenführen. Oder erst einen erzeugen, und danach für die restlichen Dateien eine for-Schleife bauen, und da einen neuen Frame erzeugen und dann an den ersten anhängen.