Dask分组变换

Dask分组变换,dask,Dask,我试图计算由多个列定义的分组的频率,我希望将该频率输出到原始dask数据帧 比如说。我想要这张桌子 ID PayMethod Day 看起来像这样: ID PayMethod Day ID_PayMethod_Count ID_PayMethod_Day_Count Groupby+transform为我们提供了一个Groupby对象,它为我们提供了与原始数据帧相同的行数 在熊猫中,我可以做到以下几点 df['ID_PayMethod_Count

我试图计算由多个列定义的分组的频率,我希望将该频率输出到原始dask数据帧

比如说。我想要这张桌子

ID      PayMethod  Day      
看起来像这样:

ID      PayMethod  Day      ID_PayMethod_Count ID_PayMethod_Day_Count
Groupby+transform为我们提供了一个Groupby对象,它为我们提供了与原始数据帧相同的行数

在熊猫中,我可以做到以下几点

df['ID_PayMethod_Count'] = df.groupby(['ID','PayMethod','Count']).transform(np.size)
   ID PayMethod       Day  ID_PayMethod
0  45        CC    Monday             2
1  45      Cash    Monday             1
2  45        CC   Tuesday             2
3  57      Cash   Tuesday             2
4  57      Cash   Tuesday             2
5  69        CC  Saturday             1
6  69      Cash    Sunday             1
目前Dask未实现groupby转换方法。我想知道是否有其他选择,是可以应用到同一位置的向量化操作,还是其他方法。我知道这可以通过groupby/aggregation/merge操作来完成,但我正试图避免这种情况,因为它会导致内存问题和操作无法完成(这些是大文件)


谢谢。

可以通过多种方法的组合实现等效计算。下面是ID_PayMethod列的示例(我注意到您提供的数据中没有计数)

对该最终输出执行
.compute()
,将产生以下结果

df['ID_PayMethod_Count'] = df.groupby(['ID','PayMethod','Count']).transform(np.size)
   ID PayMethod       Day  ID_PayMethod
0  45        CC    Monday             2
1  45      Cash    Monday             1
2  45        CC   Tuesday             2
3  57      Cash   Tuesday             2
4  57      Cash   Tuesday             2
5  69        CC  Saturday             1
6  69      Cash    Sunday             1

可通过多种方法的组合实现等效计算。下面是ID_PayMethod列的示例(我注意到您提供的数据中没有计数)

对该最终输出执行
.compute()
,将产生以下结果

df['ID_PayMethod_Count'] = df.groupby(['ID','PayMethod','Count']).transform(np.size)
   ID PayMethod       Day  ID_PayMethod
0  45        CC    Monday             2
1  45      Cash    Monday             1
2  45        CC   Tuesday             2
3  57      Cash   Tuesday             2
4  57      Cash   Tuesday             2
5  69        CC  Saturday             1
6  69      Cash    Sunday             1