问题描述
如何使用 dask 进行分组标准化? IE。标准化组内列的元素并将其添加回数据框?
熊猫是单线的:
df = pd.DataFrame({
'key1': ['a','b','c','d'] * 3,'key2': ['AA','BB','AA','BB']*3,'value': np.random.rand(12)*12
})
key1 key2 value
0 a AA 10.073799
1 b BB 3.274879
2 c AA 4.310035
3 d BB 11.007306
4 a AA 6.696945
5 b BB 2.303016
6 c AA 4.961396
7 d BB 9.440560
8 a AA 5.573023
9 b BB 0.164067
10 c AA 5.843654
11 d BB 0.175381
那就:
df['value_Z'] = df.groupby(['key1','key2'])['value'].transform(lambda x: (x-x.mean())/x.std())
获得:
key1 key2 value value_Z
0 a AA 0.232276 -0.927093
1 b BB 9.898198 0.908170
2 c AA 9.842289 1.144938
3 d BB 9.432298 0.878705
4 a AA 10.789874 1.059679
5 b BB 6.625378 0.163508
6 c AA 4.782328 -0.702230
7 d BB 1.712153 -1.088127
8 a AA 4.454244 -0.132586
9 b BB 1.196680 -1.071678
10 c AA 5.493238 -0.442708
11 d BB 6.805249 0.209422
在 dask 中做这些事情最有效的方法是什么?我找不到任何关于数据帧相当常见操作的明确说明。我知道由于分区/索引,这不是微不足道的,但最好有更多关于此的文档。
注意:groupby 位于不止一列(尽管一列可以是索引)
解决方法
暂无找到可以解决该程序问题的有效方法,小编努力寻找整理中!
如果你已经找到好的解决方法,欢迎将解决方案带上本链接一起发送给小编。
小编邮箱:dio#foxmail.com (将#修改为@)