Python:Groupby转换和唯一性

Python:Groupby转换和唯一性,python,pandas,numpy,pandas-groupby,Python,Pandas,Numpy,Pandas Groupby,我在PANDAS中创建了一个透视表,在这种情况下,单独计算字段更有意义,只需在透视步骤中使用.pivot_table()。然而,我在计算百分比的分母时遇到了一些困难。本质上,由于数据格式的原因,我似乎需要在下面第二行执行类似“groupby transform unique sum”的操作(这正是我遇到的问题): 我很抱歉不能提供任何虚假数据,但如果我希望提供足够的详细信息来说明原因,我将非常感谢任何提示。我认为需要具有唯一性和总和的lambda函数: df = pd.DataFrame({'n

我在PANDAS中创建了一个透视表,在这种情况下,单独计算字段更有意义,只需在透视步骤中使用.pivot_table()。然而,我在计算百分比的分母时遇到了一些困难。本质上,由于数据格式的原因,我似乎需要在下面第二行执行类似“groupby transform unique sum”的操作(这正是我遇到的问题):


我很抱歉不能提供任何虚假数据,但如果我希望提供足够的详细信息来说明原因,我将非常感谢任何提示。

我认为需要具有
唯一性
总和
的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