Dask分组变换
我试图计算由多个列定义的分组的频率,我希望将该频率输出到原始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
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