簡體   English   中英

在Python中合並非常大的csv文件

[英]Merging very large csv files in Python

在下面的代碼中,我合並所有以特定日期開始的所有csv文件,該日期包含在變量中:file_date。 該代碼對於小型和中等大小的csv文件非常有效,但是對於非常大的csv文件會崩潰。

path = '/Users/Documents/'+file_date+'*'+'-details.csv'+'*'
    allFiles = glob.glob(path)
    frame = pd.DataFrame()
    list_ = []
    for file_ in allFiles:
        frame = pd.read_csv(file_,index_col=None, header=0)
        print frame.shape 
        list_.append(frame)
        df = pd.concat(list_)
        print df.shape

    df.to_csv('/Users/Documents/'+file_date+'-details.csv',sep=',', index = False)

我可以分塊處理每個文件嗎? 如果是,我該怎么做?

先生,好問題! Python支持“生成器”的概念,以特定的迭代器(如時尚)的方式執行任務。 這通常用於分區任務的上下文中,例如逐塊讀取文件。 在您的情況下,您不僅會以這種方式讀取文件,還會讀取另一個文件並將其與另一個文件連接(讀取到第一個文件的末尾,然后逐步添加下一個文件)。 有關如何在此上下文中使用生成器的信息,請參見以下答案:

在Python中讀取大文件的惰性方法?

如果您不處理文件,則甚至不需要熊貓。 只需逐行讀取文件並將其寫入新文件:

with open('outfile.csv', 'w') as outfile:
    for i, filename in enumerate(all_files):
        with open(filename, 'r') as infile:
            for rownum, line in enumerate(infile):
                if (i != 0) and (rownum == 0):    # Only write header once
                    continue
                outfile.write(line + '\n')

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM