You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何为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

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.04 06:41:17