在循环中填充数据帧

时间:2016-05-12 18:22:26

标签: python pandas

是否有一种优雅的方式一次读取一个文件,进行一些预处理,然后合并为一个大数据帧。 我这样做的方式就在这里。我相信在这里可能还有其他方法可以摆脱变量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 

2 个答案:

答案 0 :(得分:3)

您不需要在每次迭代时连接DataFrame,因为concat可以连接多个DataFrame。只需将每个单独的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)

答案 1 :(得分: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])