我的DataFrame看起来像:
df = pd.DataFrame({"ID":['A','B','A','A','B','B','C','D','D','C'],
'count':[1,1,2,2,2,2,1,1,1,2]})
print(df)
ID count
0 A 1
1 B 1
2 A 2
3 A 2
4 B 2
5 B 2
6 C 1
7 D 1
8 D 1
9 C 2
我将只有ID
列,我想计算count
列。逻辑是我想累积计数ID
的出现次数。如果它像index 2 & 3
一样立即重复,它们都应该得到相同的计数。我如何才能做到这一点?
我的尝试并没有给出准确的结果:
df['x'] = df['ID'].eq(df['ID'].shift(-1)).astype(int)
df.groupby('ID')['x'].transform('cumsum')+1
0 1
1 1
2 2
3 2
4 2
5 2
6 1
7 2
8 2
9 1
Name: x, dtype: int32
这个问题与groupby累计计数没有直接关系,但它是不同的。
3条答案
按热度按时间jhiyze9q1#
我们可以做
filter
然后返回reindex
lx0bsm1f2#
您也可以将
groupby()
与sort=False
一起使用:输出:
gk7wooem3#
这也应该起作用:
输出: