2016-05-12 90 views
0

是否有一種優雅的方式來一次讀取一個文件,執行一些預處理,然後合併到一個大數據框中。 我這樣做的方式就在這裏。我相信在這裏可能有其他方法來擺脫變量i在循環中填充數據幀

i=0 
outdf = DataFrame() 
for myfile in myfiles: 
    tdf = read_csv(myfile) #Read 
    #Do some annotations 
    tdf['Class'] = os.path.basename(myfile).split[0] 
    .............. 
    #----------------- 
    if i == 0: 
     outdf = tdf 
    else: 
     outdf = concat([outdf, tdf]) 
    i = i +1 
+1

AFAIK你不需要我和if循環中的if子句。只需使用'outdf = concat([outdf,tdf])''。在第一次迭代中,它將與空數據幀進行連接,以便它將返回相同的數據幀。 – ayhan

+0

在某個時候,我開始做這種有趣的事情。非常感謝。 – learner

回答

3

你並不需要連接在每次迭代的DataFrames,爲concat可以連接多個DataFrames。只需將每個DataFrame存儲在列表中,並在最後連接即可。

outdf = [] 
for myfile in myfiles: 
    tdf = read_csv(myfile) 
    #Do some annotations 
    tdf['Class'] = os.path.basename(myfile).split[0] 
    .............. 
    #----------------- 
    outdf.append(tdf) 

outdf = concat(outdf) 
+0

這也會更快。 – ayhan

0

您可以使用枚舉。

outdf = DataFrame() 
    for i, myfile in enumerate(myfiles): 
     tdf = read_csv(myfile) 
     tdf['Class'] = os.path.basename(myfile).split[0] 
     if i == 0: 
      outdf = tdf 
     else: 
      outdf = concat([outdf, tdf])