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

时间:2017-06-16 20:15:59

标签: python pandas dask

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

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

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

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 +)列表中的任何一个到任何其他几何。

1 个答案:

答案 0 :(得分:3)

因此,在Dask文档的数据帧性能部分中注意到,两个Dask数据帧之间的连接可能非常昂贵。

通过将Dask数据帧连接到Pandas数据帧,我似乎能够保留分区。以下是对上述代码的修改示例:

xquartz

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