使用python

时间:2018-11-22 13:55:04

标签: python

我使用以下代码读取CSV大型文件(6-10 GB),插入标题文本,然后再次将其导出为CSV。

df = read_csv('read file')
df.columns =['list of headers']
df.to_csv('outfile',index=False,quoting=csv.QUOTE_NONNUMERIC)

但是这种方法非常慢,而且我的内存不足。有什么建议吗?

2 个答案:

答案 0 :(得分:0)

抱歉,我没有足够的声誉来发表评论,所以我留下一个答案。 首先,您在读取文件时会尝试添加low_memory参数吗? (https://pandas.pydata.org/pandas-docs/stable/generated/pandas.read_csv.html

df = read_csv('read file', low_memory=False)

第二,如何尝试使用info()检查内存使用情况

df = read_csv('read file')
df.columns =['list of headers']
print(df.info())

根据莫希特(Mohit)的建议,

# set chunk size to split the big file per chunk size when read it in memory
chunksize = 10 ** 6
for chunk in pd.read_csv(filename, chunksize=chunksize):
    #do process with chunk as your file content

答案 1 :(得分:0)

除了读取整个6GB文件之外,您还不能仅将标头添加到新文件,然后在其余文件中添加cat吗?像这样:

import fileinput

columns = ['list of headers']
columns.to_csv('outfile.csv',index=False,quoting=csv.QUOTE_NONNUMERIC)
with FileInput(files=('infile.csv')) as f:
    for line in f:
        outfile.write(line)
    outfile.close()