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