2017-04-17 90 views
0

我目前正在學習如何使用Python,而現在我非常喜歡使用CSV文件。我設法學習了一些東西,現在我想將我學到的知識一次性應用於多個文件。但有些事讓我感到困惑。我有這樣的代碼:一次處理多個CSV文件

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) 

它打印所有的文件夾中找到特定格式(一種表的內容與第一行是一個標題,並在之後的其餘部分)的CSV文件 訣竅是,我希望能夠隨時訪問這些內容(打印和編輯),並且我在那裏只寫下他們一次。如果我在後面的任何地方寫print(paths)prints(tables)它只打印LAST CSV文件及其數據,即使我相信它應該做同樣的事情。

我也嘗試爲每個打印(表格和路徑)製作類似的單獨代碼,但它只適用於第一個os.walk() - 我只是不明白爲什麼它只能使用一次。

謝謝!

回答

3

您將需要在加載它們時存儲DataFrame。現在你只是加載和丟棄。

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) 

上述會給你DataFrames dfs的列表,然後就可以訪問和使用。像這樣:

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

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

一旦你有數據存儲,你可以做任何事情。

+0

這就像一個魅力!甚至沒有想過使用DataFrames,非常感謝你!我仍然有辦法學習,但這有很大幫助。 – Maiels