Python 在Dask数据帧中的分区之间分布行
期望:我期望,当我对给定的数据帧进行分区时,行将大致均匀地分布到每个分区中。然后我希望,当我将数据帧写入csv时,得到的n个csv(在本例中为10)的长度大致相同 现实:当我运行下面的代码时,我发现所有行都在Python 在Dask数据帧中的分区之间分布行,python,pandas,dask,Python,Pandas,Dask,期望:我期望,当我对给定的数据帧进行分区时,行将大致均匀地分布到每个分区中。然后我希望,当我将数据帧写入csv时,得到的n个csv(在本例中为10)的长度大致相同 现实:当我运行下面的代码时,我发现所有行都在export\u results-0.csv中,而剩下的9个csv是空的,而不是一些均匀分布的行 问题:是否需要设置其他配置以确保行分布在所有分区中 from dask.distributed import Client import dask.dataframe as dd import
export\u 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+列表中任何一个到任何其他几何体的距离)。,Dask文档的dataframe performance部分指出,两个Dask数据帧之间的连接可能非常昂贵
通过将Dask数据帧连接到熊猫数据帧,我似乎能够保留分区。下面是对上述代码的示例修改:
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数据帧时分区似乎不能被保留