我有几个超过5GB的大CSV
个文件需要合并。我的RAM
只有8 GB。
目前,我正在使用Dask
将所有文件合并在一起,并尝试将数据框导出到CSV
。由于内存不足,我无法导出它们。
import dask.dataframe as dd
file_loc_1=r"..."
file_loc_2=r"..."
data_1=dd.read_csv(file_loc_1,dtype="object",encoding='cp1252')
data_2=dd.read_csv(file_loc_2,dtype="object",encoding='cp1252')
final_1=dd.merge(file_data_1,file_data_2,left_on="A",right_on="A",how="left")
final_loc=r"..."
dd.to_csv(final_1,final_loc,index=False,low_memory=False)
如果Dask不是处理数据的好方法,请随时提出新方法!
谢谢!
答案 0 :(得分:0)
您可以使用pandas.read_csv读取csv文件:设置chunksize参数,该方法返回迭代器。之后,您可以在追加模式下编写单个csv。
代码示例(未经测试):
import pandas ad pd
import os
src = ['file1.csv', 'file2.csv']
dst = 'file.csv'
for f in src:
for df in pd.read_csv(f,chuncksize=200000):
if not os.path.isfile(dst):
df.to_csv(dst)
else:
df.to_csv(dst,mode = 'a', header=False)
有用的链接:
http://acepor.github.io/2017/08/03/using-chunksize/
Panda's Write CSV - Append vs. Write
https://pandas.pydata.org/pandas-docs/stable/generated/pandas.read_csv.html