[英]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支持“生成器”的概念,以特定的迭代器(如時尚)的方式執行任務。 這通常用於分區任務的上下文中,例如逐塊讀取文件。 在您的情況下,您不僅會以這種方式讀取文件,還會讀取另一個文件並將其與另一個文件連接(讀取到第一個文件的末尾,然后逐步添加下一個文件)。 有關如何在此上下文中使用生成器的信息,請參見以下答案:
如果您不處理文件,則甚至不需要熊貓。 只需逐行讀取文件並將其寫入新文件:
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.