Python DataFrame相似列名每3个分组批量重命名实现
调整后的列重命名实现代码
cols = [] # 初始化两个计数变量 scenario_count = 1 subject_id = 1 for column in df.columns: if column == 'Stabilized Roll': # 按规则生成新列名 renamed_col = f'subject {subject_id} Stabilized Roll_scenario{scenario_count}' cols.append(renamed_col) # 组内计数累加 scenario_count += 1 # 每满3个列触发组切换 if scenario_count > 3: subject_id += 1 scenario_count = 1 continue # 非目标列直接保留原名称 cols.append(column) df.columns = cols
逻辑说明
- 替换原代码的单计数逻辑,新增
scenario_count(组内场景序号)、subject_id(组别编号)两个独立计数器 - 只有匹配到
Stabilized Roll列时才触发计数逻辑,非目标列不参与计数流程,完全保留原名 - 当组内计数到3后,自动递增组别编号、把组内计数重置为1,实现每3个匹配列划分为一组的循环逻辑
匹配效果验证
针对6个连续Stabilized Roll列的输入场景,代码输出的列名完全符合预期规则:
- 第1-3个匹配列依次命名为
subject 1 Stabilized Roll_scenario1、subject 1 Stabilized Roll_scenario2、subject 1 Stabilized Roll_scenario3 - 第4-6个匹配列依次命名为
subject 2 Stabilized Roll_scenario1、subject 2 Stabilized Roll_scenario2、subject 2 Stabilized Roll_scenario3
注:该逻辑不受匹配列是否连续的影响,只要是匹配名称的列,都会按照出现顺序归入对应组别,适配列顺序微调的场景。
内容的提问来源于stack exchange,提问作者SHEHAB
相关产品推荐
相关产品推荐

