带有 groupby 和重置条件的 cumcount 或 cumsum

问题描述 投票:0回答:1

我有一个数据框,其中 ID 和标签作为列。

df = pd.DataFrame({'ID': ['A', 'A', 'A', 'A', 'B', 'B', 'B'], 'Tag': ['', 'X', '', '', 'X', '','X']}  )  

计数列从0开始,按照1和2的顺序逐渐增加数量。如果ID改变或者标签上有X,我希望它重新从0开始。

python pandas cumsum
1个回答
0
投票

检查“标签”列中是否等于“X”并应用

Series.cumsum
,将结果传递给
df.groupby
并获得
groupby.cumcount

df['Counts'] = df.groupby(df['Tag'].eq('X').cumsum()).cumcount()

输出

df

  ID Tag  Counts
0  A           0
1  A   X       0
2  A           1
3  A           2
4  B   X       0
5  B           1
6  B   X       0
© www.soinside.com 2019 - 2024. All rights reserved.