Dask合并并导出csv

时间:2018-03-22 06:04:58

标签: python merge bigdata dask

我有几个超过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不是处理数据的好方法,请随时提出新方法!

谢谢!

1 个答案:

答案 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