Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/348.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python 从dask数据框保存多个拼花文件_Python_Dask_Parquet - Fatal编程技术网

Python 从dask数据框保存多个拼花文件

Python 从dask数据框保存多个拼花文件,python,dask,parquet,Python,Dask,Parquet,我想从一个Dask数据框中保存多个拼花文件,一个拼花文件用于特定列中的所有唯一值。因此,拼花地板文件的数量应等于该列中唯一值的数量 例如,给定以下数据帧,我想保存四个拼花地板文件,因为列“a”中有四个唯一的值 我不确定在Dask数据帧上循环是否是扩大规模的正确方法(可能unique().compute()会比我的内存大)。此外,我不确定是否必须事先订购 如果你有一些建议如何正确地实施这一点或事情要考虑,我会很高兴 这不完全是您想要的,但是可以使用的选项上的分区 ddf.to\u拼花地板(“fil

我想从一个Dask数据框中保存多个拼花文件,一个拼花文件用于特定列中的所有唯一值。因此,拼花地板文件的数量应等于该列中唯一值的数量

例如,给定以下数据帧,我想保存四个拼花地板文件,因为列“a”中有四个唯一的值

我不确定在Dask数据帧上循环是否是扩大规模的正确方法(可能
unique().compute()
会比我的内存大)。此外,我不确定是否必须事先订购


如果你有一些建议如何正确地实施这一点或事情要考虑,我会很高兴

这不完全是您想要的,但是可以使用
选项上的
分区

ddf.to\u拼花地板(“file\u parquet”,schema=“推断”,partition\u on=“A”)
请注意,这并不能保证每个分区都有一个您想要的文件,相反,在
file\u parquet
中会有子文件夹,其中可能包含多个文件

import pandas as pd
from dask import dataframe as dd

df = pd.DataFrame(
    {
        "A": [1, 1, 2, 3, 1, 3, 6, 6],
        "B": ["A", "L", "C", "D", "A", "B", "A", "B"],
        "C": [1, 2, 3, 4, 5, 6, 7, 8],
    }
)
ddf = dd.from_pandas(df, npartitions=2)

for i in ddf["A"].unique().compute():
    ddf.loc[ddf["A"] == i].to_parquet(f"file_{i}.parquet", schema="infer")