将非常大的 csv 文件分割成较小的文件

问题描述 投票:0回答:2

Dask 是否适合并行读取大型 csv 文件并将其拆分为多个较小的文件?

python dask dask-delayed
2个回答
1
投票

是的,dask 可以读取大型 CSV 文件。它将把它们分成块

df = dd.read_csv("/path/to/myfile.csv")

然后,保存时,Dask 总是将 CSV 数据保存到多个文件中

df.to_csv("/output/path/*.csv")

有关此内容的更多信息,请参阅 read_csv 和 to_csv 文档字符串。


1
投票

我将生成一个基本数据框,但在您的情况下逻辑不应该有太大不同,因为您只需要考虑位置。

生成数据框

import dask.dataframe as dd
import numpy as np
import pandas as pd
import string

letters = list(string.ascii_lowercase)

N = int(1e6)
df = pd.DataFrame({"member":np.random.choice(letters, N),
                   "values":np.random.rand(N)})

df.to_csv("file.csv", index=False)

每个成员一个
parquet
文件(文件夹)

如果您很高兴将输出作为

parquet
您可以使用选项
partition_on
as

df = dd.read_csv("file.csv")
df.to_parquet("output", partition_on="member")

如果您确实需要

csv
,您可以转换为这种格式。我强烈建议您将数据移至
parquet

© www.soinside.com 2019 - 2024. All rights reserved.