按组滚动的独特分类特征

时间:2019-08-18 22:32:43

标签: 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    2

我觉得pd.rolling_count可能有答案,但是我还没有弄清楚。感谢您的智慧和巫术!

2 个答案:

答案 0 :(得分:3)

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

然后,我们merge将这些结果返回到原始数据框。

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

答案 1 :(得分:0)

方法与Erfan建议的相同。只是不必做merge

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

输出

  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