如何在循环中使用pandas concat来合并大量的子CSV

时间:2017-12-12 16:51:43

标签: python pandas

我正在尝试将大量子CSV合并为一个CSV。

我希望它们以行对齐方式合并。

我试过了pd.concat([df1, df4], axis=1)

但结果CSV的数据是最后一个子CSV的数据。它没有合并。

我想要的是什么:

A     B        AB
A  +  B   ->   AB
A     B        AB

以下是代码:

def listdirInMac(path):
    os_list = os.listdir(path)
    for item in os_list:
        if item.startswith('.') and os.path.isfile(os.path.join(path, item)):
            os_list.remove(item)
    os_list.sort()
    return os_list

root='/Users/alex/Documents/data/want/test/'
result=pd.DataFrame()
pieces=[]
#all txt data will append on this variable
for file in listdirInMac(root):
    if 'CSV' in file:          
        pathname=os.path.join(root,file)  #file path 
        #print pathname
        temp=pd.read_csv(pathname,usecols=[1],header=None)  # read csv
        result = pd.concat([newfile,temp],axis=1)

result.to_csv('/Users/alex/Documents/data/1/result.csv')     

1 个答案:

答案 0 :(得分:2)

我建议您在循环中阅读数据框,并在外面只调用pd.concat

pieces = []
for file in listdirInMac(root):
    ...
    pieces.append(temp)

现在您已拥有DataFrame列表,只需将其传递给concat

df = pd.concat(pieces, axis=1)
df.to_csv(...)