[英]How to groupby a column and agg as a list another column in Dask DataFrame?
[英]Dask: Groupby and 'First'/ 'Last' in agg
我想对单个列进行分组,然后将agg
与均值用于几列,但只需为其余列选择first
或last
。 这在 Pandas 中是可能的,但目前在 Dask 中不受支持。 这该怎么做? 谢谢。
aggs = {'B': 'mean', 'C': 'mean', 'D': 'first', 'E': 'first'}
ddf.groupby(by='A').agg(aggs)
您可以使用dask.dataframe.DataFrame.drop_duplicates
然后加入聚合数据帧:
df = pd.DataFrame({'F':list('abcdef'),
'B':[4,5,4,5,5,4],
'C':[7,8,9,4,2,3],
'D':[1,3,5,7,1,0],
'E':[5,3,6,9,2,4],
'A':list('aaabbb')})
print (df)
A B C D E F
0 a 4 7 1 5 a
1 a 5 8 3 3 b
2 a 4 9 5 6 c
3 b 5 4 7 9 d
4 b 5 2 1 2 e
5 b 4 3 0 4 f
from dask import dataframe as dd
ddf = dd.from_pandas(df, npartitions=3)
#print (ddf)
c = ['B','C']
a = ddf.groupby(by='A')[c].mean()
b = ddf.drop(c, axis=1).drop_duplicates(subset=['A'])
df = b.join(a, on='A').compute()
print (df)
A D E F B C
0 a 1 5 a 4.333333 8.0
3 b 7 9 d 4.666667 3.0
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.