如何对齐两个dask数据帧的分区

2024-10-03 19:28:44 发布

您现在位置:Python中文网/ 问答频道 /正文

我有两个dask数据帧,它们首先在pandas中读取,在各自的“zo_id”列上建立索引,然后转换为具有4个分区的dask数据帧:

drivetimes = pd.read_sql('QUERY1',engine)
drivetimes.set_index('zo_id', inplace=True)
drivetimes = dd.from_pandas(drivetimes, npartitions=4)
drivetimes.npartitions
drivetimes.divisions

(623725627468631429636360645492)

calc_zones = pd.read_sql('QUERY2',engine)
calc_zones.rename(columns={"re_id": "z_re_id"}, inplace=True)
calc_zones.set_index('zo_id', inplace=True)
calc_zones = dd.from_pandas(calc_zones, npartitions=4)
calc_zones.npartitions
calc_zones.divisions

(623725629167634609640051645492)

如您所见,这些分区没有对齐,当我使用各自的索引合并两个数据帧时:

j1 = dd.merge(drivetimes, calc_zones, on='zo_id', left_index = True, right_index = True, how='inner')
j1.shape[0].compute()

我可以在仪表板中看到,图表从重新划分任务开始。如何“预对齐”这两个数据帧的分区,以避免每次计算时重复重新洗牌数据


Tags: 数据idtruepandasindexcalcdddask