Python中基于DataFrame的count值为字符串生成递增序号的实现
Pandas 数据展开与编号生成实现方案
你当前的需求是按count字段的数值将单条记录拆分为对应数量的多条记录,再为拆分后的记录生成带两位递增序号的type拼接字段,不需要使用melt方法(该方法适用于宽表转长表场景,和当前行复制的需求不匹配),直接用repeat方法完成行展开后结合你拿到的编号逻辑即可实现需求。
完整实现代码如下:
import pandas as pd # 构造原始示例数据,你可以替换为自己的数据源读取逻辑 df = pd.DataFrame({ 'id': ['aa', 'aa', 'bb'], 'type': ['hi', 'hey', 'hi'], 'date': ['q1 2023', 'q2 2023', 'q1 2023'], 'count': [2, 3, 2] }) # 核心处理逻辑 result = ( # 按count值重复对应行,完成数据集展开 df.loc[df.index.repeat(df['count'])] # 生成带两位序号的新count字段 .assign(count=lambda d: d['type'] + d.groupby(['id', 'date', 'type']).cumcount().add(1).astype(str).str.zfill(2)) # 调整列顺序和预期输出对齐 [['id', 'count', 'type', 'date']] # 重置索引,清除原重复索引的影响 .reset_index(drop=True) ) print(result)
运行上述代码即可得到你给出的预期输出结果。
内容的提问来源于stack exchange,提问作者Lynn
相关产品推荐
相关产品推荐

