我如何操作Dask';谁是小组成员?

我如何操作Dask';谁是小组成员?,dask,Dask,我有下表 value category 0 2 A 1 20 B 2 4 A 3 40 B 我想添加一个mean列,其中包含每个类别的值的平均值 value category mean 0 2 A 3.0 1 20 B 30.0 2 4 A 3.0 3 40 B 30.0 我可以在

我有下表

    value   category
0   2       A
1   20      B
2   4       A
3   40      B
我想添加一个
mean
列,其中包含每个类别的值的平均值

    value   category  mean
0   2       A          3.0
1   20      B         30.0
2   4       A          3.0
3   40      B         30.0
我可以在熊猫身上这样做

p = pd.DataFrame({"value":[2, 20, 4, 40], "category": ["A", "B", "A", "B"]})
groups = []
for _, group in p.groupby("category"):
    group.loc[:,"mean"] = group.loc[:,"value"].mean()
    groups.append(group)
pd.concat(groups).sort_index()
我如何在达斯克做同样的事情

我不能按原样使用pandas函数,因为不能在Dask中枚举groupby对象。这个

import dask.dataframe as dd

d = dd.from_pandas(p, chunksize=100)
list(d.groupby("category"))
引发
KeyError:“未找到列:0”

我可以使用
apply
函数计算Dask中的平均值

import dask.dataframe as dd

d = dd.from_pandas(p, chunksize=100)
q = d.groupby(["category"]).apply(lambda group: group["value"].mean(), meta="object")
q.compute()
返回

category
A     3.0
B    30.0
dtype: float64

但我不知道如何将它们折叠回原始表的行中。

我将使用合并来实现此操作:

导入dask.dataframe作为dd
作为pd进口熊猫
df=pd.DataFrame({
“值”:[2,20,4,40],
'类别':['A','B','A','B']
})
ddf=dd.from_熊猫(df,npartitions=1)
#惰性计算每个类别的平均值
按类别平均值=(ddf
.groupby(“类别”)
.agg({'value':'mean'})
.rename(列={'value':'mean'})
).persist()
按类别的平均值。头()
#将“平均值”分配给每个相应类别
ddf=ddf.merge(按类别平均,左=类别,右=真)
ddf.head()
然后输出:

  category  value  mean
0        A      2   3.0
2        A      4   3.0
1        B     20  30.0
3        B     40  30.0

我将使用合并来实现此操作:

导入dask.dataframe作为dd
作为pd进口熊猫
df=pd.DataFrame({
“值”:[2,20,4,40],
'类别':['A','B','A','B']
})
ddf=dd.from_熊猫(df,npartitions=1)
#惰性计算每个类别的平均值
按类别平均值=(ddf
.groupby(“类别”)
.agg({'value':'mean'})
.rename(列={'value':'mean'})
).persist()
按类别的平均值。头()
#将“平均值”分配给每个相应类别
ddf=ddf.merge(按类别平均,左=类别,右=真)
ddf.head()
然后输出:

  category  value  mean
0        A      2   3.0
2        A      4   3.0
1        B     20  30.0
3        B     40  30.0