如何用Pandas将列分组聚合为带连续值计数的列表?
解决Pandas连续相同值分组聚合生成指定格式列表的问题
- 构造示例数据(如果已有目标DataFrame可跳过此步骤)
import pandas as pd df = pd.DataFrame({'col': [0, 1, 1, 1, 0, 0, 0, 1, 0]})
- 创建连续相同值的分组标识
对比当前行与上一行的col值是否不同,生成布尔序列后累加,以此得到唯一的连续分组编号:
df['group'] = (df['col'] != df['col'].shift()).cumsum()
- 分组聚合并格式化结果
按分组编号聚合,提取每个组的标签(组内第一个col值)和连续出现次数(组的行数),格式化为<label>-<count>的字符串后转成列表:
result = df.groupby('group')['col'].agg(lambda x: f"{x.iloc[0]}-{len(x)}").tolist()
执行上述代码后,result的输出为:['0-1','1-3','0-3','1-1','0-1'],完全匹配需求。
内容的提问来源于stack exchange,提问作者Yiffany
相关产品推荐
相关产品推荐

