Python 熊猫适用于大型csv文件

Python 熊猫适用于大型csv文件,python,csv,pandas,Python,Csv,Pandas,我有一个3GB的csv文件需要修改。 我有一个要应用lambda函数的列(该列应更改行的值) 到目前为止,我尝试的解决方案是将CSV作为分块文件读取,但内存问题仍然存在 这就是我迄今为止所尝试的: dataframe = read_csv(file_path, iterator=True, chunksize=10000) for chunk in dataframe: chunk['column_name'].apply(change_row_lambda_function) dat

我有一个3GB的csv文件需要修改。 我有一个要应用lambda函数的列(该列应更改行的值)

到目前为止,我尝试的解决方案是将CSV作为分块文件读取,但内存问题仍然存在

这就是我迄今为止所尝试的:

dataframe = read_csv(file_path, iterator=True, chunksize=10000)

for chunk in dataframe:
   chunk['column_name'].apply(change_row_lambda_function)

dataframe.to_csv(result_file_path, sep=',')
试试这个:

# write header (column names)
read_csv(file_path, nrows=1).head(0).to_csv(result_file_path)

dataframe = read_csv(file_path, iterator=True, chunksize=10000)

for chunk in dataframe:
   chunk['column_name'] = chunk['column_name'].apply(change_row_lambda_function)
   chunk.to_csv(result_file_path, mode='a', header=None)

到底发生了什么?只加载相关列它只是在迭代完成之前引发一个内存错误(pandas.parser.TextReader.\u read\u low\u memory)每次我保存到CSV时都会覆盖文件,在文件中间的一些地方,程序仍然会增加内存。error@JoeDoe:如果您将
mode='a'
传递给
传递给\u csv
方法(就像MaxU所做的那样),它将附加数据。我认为这正在工作,但仍然存在一个问题。在追加最后一个块之后,该程序将提升低内存。这种技术也适用于较大的文件?@JoeDoe,这不应该发生,因为我们正在重用相同的变量
chunk
。检查其他内容(除了这段代码)。您可能还希望使用较小的chunksize来检查它