Python - объединяет файлы CSV в определенном каталоге - PullRequest
0 голосов
/ 16 мая 2018

Я пытаюсь объединить файлы 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 голосов
/ 16 мая 2018

Загрузка CSV-файлов в pandas только для целей объединения неэффективна.См. этот ответ для более прямой альтернативы.

Если вы настаиваете на использовании 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
0 голосов
/ 16 мая 2018

glob.glob() требуется подстановочный знак для сопоставления всех файлов в папке, которую вы дали. Без этого вы могли бы просто получить имя папки, и ни один из файлов внутри нее. Попробуйте следующее:

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. Это приводит к отключению обратной косой черты в строке.

...