如何基于pandas DataFrame指定列的连续相同值块生成对应唯一ID
问题原因
你之前使用的groupby(['A'], sort=False).ngroup()方法,是将所有列值相同的行归为同一组,不区分是否为连续块,因此无法满足需求。
正确实现方法
核心逻辑是:对比当前行与上一行的指定列值,值发生变化时标记为1,累加标记值即可得到连续块的唯一ID。
完整代码如下:
import pandas as pd df = pd.DataFrame({'A': [0,0,0,0,0,0,0,1,1,1,1,1,1,0,0,0,0,0,0,1,1,1,0,0,0,0,1,1,1]}) # 生成连续块ID df['id'] = (df['A'] != df['A'].shift()).cumsum()
运行后输出的df完全符合你给出的预期格式。
内容的提问来源于stack exchange,提问作者Ali
相关产品推荐
相关产品推荐

