熊猫通过唯一值分组并取平均值

blu*_*ers 4 python dataframe pandas pandas-groupby

我有以下数据框

   ID ID2  SCORE  X  Y
0   0   a     10  1  2
1   0   b     20  2  3
2   0   b     20  3  4
3   0   b     30  4  5
4   1   c      5  5  6
5   1   d      6  6  7
Run Code Online (Sandbox Code Playgroud)

我想做的是分组IDID2平均,SCORE只考虑UNIQUE得分。

现在,如果我使用标准,df.groupby(['ID', 'ID2'])['SCORE'].mean()我将得到23.33〜,我所寻找的是25分。

我知道我可以过滤出XY删除重复项,然后这样做,但是我想保留它们,因为它们是相关的。

我该如何实现?

Max*_*axU 5

如果我正确理解:

In [41]: df.groupby(['ID', 'ID2'])['SCORE'].agg(lambda x: x.unique().sum()/x.nunique())
Out[41]:
ID  ID2
0   a      10
    b      25
1   c       5
    d       6
Name: SCORE, dtype: int64
Run Code Online (Sandbox Code Playgroud)

还是容易一些:

In [43]: df.groupby(['ID', 'ID2'])['SCORE'].agg(lambda x: x.unique().mean())
Out[43]:
ID  ID2
0   a      10
    b      25
1   c       5
    d       6
Name: SCORE, dtype: int64
Run Code Online (Sandbox Code Playgroud)