Python - 在特定目录中连接CSV文件

时间:2018-05-16 06:03:39

标签: python csv concatenation concat

我正在尝试连接桌面文件夹中的CSV文件:

C:\\Users\\Vincentc\\Desktop\\W1 

并将最终的CSV输出到:

C:\\Users\\Vincentc\\Desktop\\W2\\conca.csv

CSV文件没有标题。但是,当我运行我的脚本时没有任何结果,也没有错误消息。我是初学者,有人可以查看下面的代码,非常感谢!

import os
import glob
import pandas

def concatenate(indir="C:\\Users\\Vincentc\\Desktop\\W1",outfile="C:\\Users\\Vincentc\\Desktop\\W2\\conca.csv"):
    os.chdir(indir)
    fileList=glob.glob("indir")
    dfList=[]
    for filename in fileList:
        print(filename)
        df=pandas.read_csv(filename,header=None)
        dfList.append(df)
    concaDf=pandas.concat(dfList,axis=0)
    concaDf.to_csv(outfile,index=None)

2 个答案:

答案 0 :(得分:2)

仅为了连接而将csv文件加载到pandas是低效的。有关更直接的替代方案,请参阅this answer

如果您坚持使用pandas,第三方库dask会提供直观的界面:

import dask.dataframe as dd

df = dd.read_csv('*.csv')  # read all csv files in directory lazily
df.compute().to_csv('out.csv', index=False)  # convert to pandas and save as csv

答案 1 :(得分:1)

asyncio executors API需要使用通配符来匹配您提供的文件夹中的所有文件。没有它,您可能只是获取返回的文件夹名称,而不是其中的任何文件。请尝试以下方法:

import os
import glob
import pandas

def concatenate(indir=r"C:\Users\Vincentc\Desktop\W1\*", outfile=r"C:\Users\Vincentc\Desktop\W2\conca.csv"):
    os.chdir(indir)
    fileList = glob.glob(indir)
    dfList = []

    for filename in fileList:
        print(filename)
        df = pandas.read_csv(filename, header=None)
        dfList.append(df)

    concaDf = pandas.concat(dfList, axis=0)
    concaDf.to_csv(outfile, index=None)

此外,您可以通过使用\\或在字符串前添加/来避免添加r。这具有禁用字符串上的反斜杠转义的效果。