Python:Groupby转换和唯一性
我在PANDAS中创建了一个透视表,在这种情况下,单独计算字段更有意义,只需在透视步骤中使用.pivot_table()。然而,我在计算百分比的分母时遇到了一些困难。本质上,由于数据格式的原因,我似乎需要在下面第二行执行类似“groupby transform unique sum”的操作(这正是我遇到的问题):Python:Groupby转换和唯一性,python,pandas,numpy,pandas-groupby,Python,Pandas,Numpy,Pandas Groupby,我在PANDAS中创建了一个透视表,在这种情况下,单独计算字段更有意义,只需在透视步骤中使用.pivot_table()。然而,我在计算百分比的分母时遇到了一些困难。本质上,由于数据格式的原因,我似乎需要在下面第二行执行类似“groupby transform unique sum”的操作(这正是我遇到的问题): 我很抱歉不能提供任何虚假数据,但如果我希望提供足够的详细信息来说明原因,我将非常感谢任何提示。我认为需要具有唯一性和总和的lambda函数: df = pd.DataFrame({'n
我很抱歉不能提供任何虚假数据,但如果我希望提供足够的详细信息来说明原因,我将非常感谢任何提示。我认为需要具有
唯一性和总和的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())
具有set
s和sum
s的替代解决方案:
df['denominator']=df.groupby(['category2'])['numerator'].transform(lambda x: sum(set(x)))
哇,非常感谢你的洞察力和这么快!啊,我现在明白我的错误了。我最初尝试过.transform(lambda x:sum(x.unique()))。一如既往地谢谢你。
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