如何添加指定行填充NaN、调整位置并按重复区间展示多列值

用Python的pandas库可以高效实现你的需求,具体步骤和示例代码如下:
实现逻辑
- 标记重复段分组
每个数据段均以II开头、//结尾,先给每个段分配唯一的组ID,方便后续批量处理。 - 补全缺失的指定行
预定义每个段的标准行序列,按分组重新索引后,缺失的GG等行自动填充NaN,满足第一个需求。 - 行转列展示
将补全后的分组内的行数据转为列格式,满足第二个需求。
示例代码
import pandas as pd import numpy as np # 假设你已经把原始数据读为df,两列的列名分别为['tag', 'value'] # 下方是对应你图中左侧内容的示例原始数据构造,实际使用时替换为你自己的读入逻辑即可 df = pd.DataFrame({ 'tag': ['II', 'AA', 'BB', 'JJ', 'KK', '//', 'II', 'AA', 'BB', 'GG', 'JJ', 'KK', '//'], 'value': [1, 2, 3, 5, 6, 7, 11, 12, 13, 14, 15, 16, 17] }) # 1. 生成分组ID:遇到II则组号+1 df['group_id'] = (df['tag'] == 'II').cumsum() # 2. 定义每个组的标准标签序列,可根据实际需求修改 standard_tags = ['II', 'AA', 'BB', 'GG', 'JJ', 'KK', '//'] # 3. 按分组重新索引,补全缺失行,缺失值自动设为NaN df_full = df.set_index(['group_id', 'tag']).reindex(pd.MultiIndex.from_product([df['group_id'].unique(), standard_tags], names=['group_id', 'tag'])).reset_index() # 4. 行转列,得到每个组为一行、各标签对应值为列的结果 df_result = df_full.pivot(index='group_id', columns='tag', values='value').reset_index(drop=True) # 输出结果 print(df_result)
说明
- 如果你的标准序列和示例不一致,直接修改
standard_tags的取值即可,适配所有固定序列缺失补全的场景 - 批量处理上千个重复段时,pandas的向量化操作性能足够支撑,不需要额外做循环优化
内容的提问来源于stack exchange,提问作者LoganLee
相关产品推荐
相关产品推荐

