我使用以下代码读取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)
但是这种方法非常慢,而且我的内存不足。有什么建议吗?
答案 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()