gpt4 book ai didi

python - 在 Dask DataFrame 中的分区之间分配行

转载 作者:太空宇宙 更新时间:2023-11-03 10:54:08 26 4
gpt4 key购买 nike

预期:我希望,当我对给定的数据帧进行分区时,行将大致均匀地分布到每个分区中。然后我希望,当我将数据帧写入 csv 时,生成的 n 个 csvs(在本例中为 10)同样具有大致相等的长度。

现实:当我运行下面的代码时,我发现所有行都在 export_results-0.csv 中,而不是稍微均匀分布的行,其余 9 个 csvs 是空的。

问题:是否需要设置其他配置以确保行分布在所有分区中?

from dask.distributed import Client
import dask.dataframe as dd
import pandas as pd

client = Client('tcp://10.0.0.60:8786')

df = pd.DataFrame({'geom': np.random.random(1000)}, index=np.arange(1000))
sd = dd.from_pandas(df, npartitions=100)

tall = dd.merge(sd.assign(key=0), sd.assign(key=0), on='key').drop('key', axis=1)
tall.to_csv('export_results-*.csv').compute()

关于上面的代码:在下面的代码中,我创建了一个 1000 行的数据框并将其与自身合并,以创建一个 1000000 行长的数据框(目标是最终生成一个又薄又高的表,它与100k+ 列表中的任何一个到任何其他几何体)。

最佳答案

因此,在 Dask 文档的数据帧性能部分中指出,连接两个 Dask 数据帧可能非常昂贵。

通过将 Dask 数据框加入 Pandas 数据框,我似乎能够保留分区。下面是对上述代码的示例修改:

df1 = pd.DataFrame({ 'geom': np.random.random(200) }, index=np.arange(200))
sd1 = dd.from_pandas(df1.copy(), npartitions=5).assign(key=0)

tall = dd.merge(sd1, df1.assign(key=0), on='key', npartitions=10).drop('key', axis=1)
tall.to_csv('exported_csvs/res-*.csv')

至此,维护分区的目的就达到了。也就是说,我仍然有兴趣了解为什么在合并两个 Dask 数据帧时分区似乎无法保留。

关于python - 在 Dask DataFrame 中的分区之间分配行,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/44597310/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com