gpt4 book ai didi

Python Pandas : Groupby Transform Sum Unique

转载 作者:行者123 更新时间:2023-12-01 01:52:07 29 4
gpt4 key购买 nike

我遇到一种情况,我在 PANDAS 中创建数据透视表,单独计算字段并仅使用 .pivot_table() 作为数据透视步骤更有意义。然而,我在计算百分比的分母时遇到了一些困难。本质上,由于数据格式,我似乎需要在下面的第二行执行类似“groupby 变换唯一总和”的操作(这是我陷入困境的地方):

df['numerator'] = df.groupby(['category1','category2'])['customer_id'].transform('nunique')
df['denominator'] = df.groupby(['category2'])['numerator'].nunique().transform('sum')
df['percentage'] = (df['numerator'] / df['denominator'])

df_pivot = df.pivot_table(index='category1',
columns=['category2'],
values=['numerator','percentage']) \
swaplevel(0,1,axis=1)

df_pivot.loc['total', :] = df_pivot.sum().values

很抱歉无法提供任何虚拟数据,但如果我希望提供足够的细节来进行推理,我将不胜感激。

最佳答案

我相信需要具有uniquesum的lambda函数:

df = pd.DataFrame({'numerator':[3,1,1,9,2,2],
'category2':list('aaabbb')})

#print (df)

df['denominator']=df.groupby(['category2'])['numerator'].transform(lambda x: x.unique().sum())

使用setsum的替代解决方案:

df['denominator']=df.groupby(['category2'])['numerator'].transform(lambda x: sum(set(x)))
<小时/>
print (df)
category2 numerator denominator
0 a 3 4
1 a 1 4
2 a 1 4
3 b 9 11
4 b 2 11
5 b 2 11

关于Python Pandas : Groupby Transform Sum Unique,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/50611772/

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