gpt4 book ai didi

python - Dask: Groupby 和 'First'/'Last' in agg

转载 作者:太空宇宙 更新时间:2023-11-04 04:48:29 26 4
gpt4 key购买 nike

我想按单个列分组,然后对几列使用 agg 和均值,但只需选择 firstlast对于其余的列。这在 Pandas 中是可能的,但目前在 Dask 中不受支持。这个怎么做?谢谢。

aggs = {'B': 'mean', 'C': 'mean', 'D': 'first', 'E': 'first'}
ddf.groupby(by='A').agg(aggs)

最佳答案

您可以使用 dask.dataframe.DataFrame.drop_duplicates然后加入聚合DataFrame:

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

关于python - Dask: Groupby 和 'First'/'Last' in agg,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/48961304/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com