我有一个数据框,其中 ID 和标签作为列。
df = pd.DataFrame({'ID': ['A', 'A', 'A', 'A', 'B', 'B', 'B'], 'Tag': ['', 'X', '', '', 'X', '','X']} )
计数列从0开始,按照1和2的顺序逐渐增加数量。如果ID改变或者标签上有X,我希望它重新从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