Python 在循环中填充数据帧

Python 在循环中填充数据帧,python,pandas,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] ..............

是否有一种优雅的方式一次读取一个文件,进行一些预处理,然后合并到一个大数据帧中。 我的做法就是在这里。我相信这里可能有其他方法来消除变量
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 
您可以使用枚举

    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])
您可以使用枚举

    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])

您不需要在每次迭代时连接数据帧,因为
concat
可以连接多个数据帧。只需将每个单独的数据帧存储在一个列表中,并在最后连接

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)

您不需要在每次迭代时连接数据帧,因为
concat
可以连接多个数据帧。只需将每个单独的数据帧存储在一个列表中,并在最后连接

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)

好了,在循环中也不需要i和if子句。只需使用
outdf=concat([outdf,tdf])
。在第一次迭代中,它将使用空数据帧进行连接,因此它将返回相同的数据帧。非常感谢。好吧,你不需要在循环中使用i和if子句。只需使用
outdf=concat([outdf,tdf])
。在第一次迭代中,它将使用空数据帧进行连接,因此它将返回相同的数据帧。非常感谢。这也会更快。这也会更快。