与纯 pandas 相比,Dask map_partitions 在减少时会产生重复并给出错误的结果

Dask map_partitions results in duplicates when reducing and gives wrong results compared to pure pandas

当我使用 map_partitions 使用 dask 进行 groupby 时,与简单的 pandas groupby 相比,我得到了重复的数据和错误的结果。但是当我使用 n_partitons=1 时,我得到了正确的结果。 为什么会这样?以及如何使用多个分区并仍然获得正确的结果?

我的密码是

measurements = measurements.repartition(n_partitions=38)
measurements.map_partitions(lambda df : df.groupby(["id",df.time.dt.to_period("M"), 
"country","job"]).source.nunique()).compute().reset_index()

在pandas,我

measurements.groupby(["id",measurements.time.dt.to_period("M"), 
    "country","job"]).source.nunique().reset_index()

PS: 我在一台机器上使用本地集群。

当您调用 map_partitions 时,您说您要对每个分区执行该操作。鉴于每个唯一的分组值都可以出现在多个分区中,对于每个组,对于找到它的每个分区,您将获得一个条目。

如果有一种方法可以跨分区进行 groupby 并自动巧妙地合并结果,那会怎样?幸运的是,这正是 dask 所做的,您根本不需要使用 map_partitions。

measurements.groupby(...).field.nunique().compute()