Python 按组的唯一分类特征滚动计数

Python 按组的唯一分类特征滚动计数,python,pandas,Python,Pandas,我想按组获得唯一分类的滚动计数: Group Item A pen A pen A elbow A warthog B elbow B peach 应导致: Group Item Unique_item_count A pen 1 A pen 1 A elbow 2 A warthog 3 B elbow 1 B peach

我想按组获得唯一分类的滚动计数:

Group  Item
A      pen
A      pen
A      elbow
A      warthog
B      elbow
B      peach
应导致:

Group  Item     Unique_item_count
A      pen      1
A      pen      1
A      elbow    2
A      warthog  3
B      elbow    1
B      peach    2

我觉得警察局可能有答案,但我还没弄明白。谢谢你的智慧和魔法

我们可以
GroupBy
两次。首先我们得到
nunique
值,第二次我们得到
cumsum
以增加
项中每个唯一值的计数:

然后我们
将这些结果合并回原始数据帧

s = df.groupby(['Group', 'Item'], sort=False)['Item'].nunique().groupby(level=0).cumsum()

final = df.merge(s.reset_index(name='Unique_item_count'), on=['Group', 'Item'])
输出

  Group     Item  Unique_item_count
0     A      pen                  1
1     A      pen                  1
2     A    elbow                  2
3     A  warthog                  3
4     B    elbow                  1
5     B    peach                  2
  Group     Item    Unique_count
0   A       pen         1
1   A       pen         1
2   A       elbow       2
3   A       warthog     3
4   B       elbow       1
5   B       peach       2

方法与Erfan建议的相同。只要不必进行
合并

df.groupby(['Group', 'Item'], sort=False)['Item'].nunique().groupby(level=0).cumsum().reindex(df).reset_index(name='Unique_count')
输出

  Group     Item  Unique_item_count
0     A      pen                  1
1     A      pen                  1
2     A    elbow                  2
3     A  warthog                  3
4     B    elbow                  1
5     B    peach                  2
  Group     Item    Unique_count
0   A       pen         1
1   A       pen         1
2   A       elbow       2
3   A       warthog     3
4   B       elbow       1
5   B       peach       2

好办法!!这是惊人的。如果解决方案是有用的,你会考虑“上投票”并接受它。