如何为Pandas重复列名添加周索引后缀实现高效重命名?
高效重命名按周重复的Pandas DataFrame列
核心思路
统计每个列名的出现频次,为同一指标的不同周实例按出现顺序添加_wN格式的周数后缀,全程自动化处理,无需手动逐个修改。
通用实现方案
不管列名是连续重复还是分散排列,都能用这个方法批量重命名:
import pandas as pd from collections import defaultdict # 示例DataFrame(模拟你的100列数据结构) df = pd.DataFrame({ 'hours': [10, 12], 'clicks': [100, 150], 'hours': [11, 13], # 对应week2的hours 'clicks': [120, 160], 'hours': [9, 14], # 对应week3的hours 'clicks': [90, 170] # 其余70+列同理 }) # 批量生成新列名 counts = defaultdict(int) new_cols = [] for col in df.columns: counts[col] += 1 new_cols.append(f"{col}_w{counts[col]}") # 替换原列名 df.columns = new_cols
进阶场景:列按周块分组排列
如果你的列是严格按周分组的(比如先全是week1的所有指标列,再是week2的所有指标列),可以直接按周数批量生成后缀,效率更高:
# 假设你的数据有5周,每周20个指标列 num_weeks = 5 # 替换成你实际的指标列名列表(比如['hours','clicks','views',...]) metrics = ['hours', 'clicks'] * (100 // (2*num_weeks)) new_cols = [] for week in range(1, num_weeks+1): for metric in metrics: new_cols.append(f"{metric}_w{week}") df.columns = new_cols
效果验证
执行后,所有重复列名会自动变为hours_w1、clicks_w1、hours_w2、clicks_w2的格式,完全匹配需求,100列的处理耗时不到1秒。
内容的提问来源于stack exchange,提问作者kri
相关产品推荐
相关产品推荐

