2017-04-17 6 views
0

Ich lerne gerade, wie man mit Python arbeitet, und im Moment bin ich sehr gern mit CSV-Dateien beschäftigt. Ich habe es geschafft, ein paar Dinge zu lernen, und jetzt möchte ich das, was ich gelernt habe, auf mehrere Dateien gleichzeitig anwenden. Aber etwas hat mich verwirrt. Ich habe diesen Code:Mehrere CSV-Dateien gleichzeitig bearbeiten

for root, dirs, files in os.walk(path):  
    for file in files: 
    if file.endswith(".csv"):    
     paths=os.path.join(root,file) 
     tables=pd.read_csv(paths, header='infer', sep=',') 
     print(paths) 
     print(tables) 

Er druckt alle CSV-Dateien in diesem Ordner in einem bestimmten Format (eine Art Tisch mit der ersten Reihe ist ein Header und der Rest folgt unter) gefunden Der Trick ist, dass ich Ich möchte jederzeit darauf zugreifen können (drucken und bearbeiten) und was ich dort geschrieben habe, drucke sie nur EINMAL. wenn ich schreibe print(paths) oder prints(tables) irgendwo anders danach druckt es nur die LETZTE CSV-Datei und ihre Daten, obwohl ich glaube, dass es das gleiche tun sollte.

Ich habe auch versucht, ähnliche separate Codes für jeden Druck (Tabellen und Pfade), aber es funktioniert nur für die erste os.walk() - Ich verstehe nicht, warum es nur einmal funktioniert.

Vielen Dank!

Antwort

3

Sie möchten die DataFrames speichern, während Sie sie laden. Im Moment laden und verwerfen Sie einfach.

dfs = [] 
for root, dirs, files in os.walk(path):  
    for file in files: 
    if file.endswith(".csv"):    
     paths=os.path.join(root,file) 
     tables=pd.read_csv(paths, header='infer', sep=',') 
     dfs.append(tables) 
     print(paths) 
     print(tables) 

Die Sie oben geben eine Liste von Datenrahmen dfs, dass Sie können den Zugriff dann und nutzen. Wie so:

print(dfs[0]) 
# prints the first DataFrame you read in. 

for df in dfs: 
    print(df) 
# prints each DataFrame in sequence 

Sobald Sie die Daten gespeichert haben, können Sie so ziemlich alles tun.

+0

Das funktioniert wie ein Zauber! Mir ist es nicht einmal in den Sinn gekommen, DataFrames zu benutzen, vielen Dank! Ich habe immer noch Wege zu lernen, aber das hilft sehr. – Maiels

Verwandte Themen