期望:我希望,当我对给定的数据帧进行分区时,行将大致均匀地分布到每个分区中。我希望,当我将数据帧写入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 +)列表中的任何一个到任何其他几何。
答案 0 :(得分:3)
因此,在Dask文档的数据帧性能部分中注意到,两个Dask数据帧之间的连接可能非常昂贵。
通过将Dask数据帧连接到Pandas数据帧,我似乎能够保留分区。以下是对上述代码的修改示例:
xquartz
现在,这实现了维护分区的目标。也就是说,我仍然有兴趣了解为什么在合并两个Dask数据帧时似乎无法保留分区。