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

如何按周期重命名DataFrame列名(避免重复列名)

解决方案

直接通过分组遍历列名的方式实现重命名,代码如下:

import pandas as pd

# 原始DataFrame构造
df = pd.DataFrame()
df['id'] = [1]
df['v0'] = [2]
df['v1'] = [1]
df['v2'] = [2]
df['v3'] = [1]
df['v4'] = [2]
df['v5'] = [1]
df['v6'] = [2]
df['v7'] = [1]
df['v8'] = [2]
df['v9'] = [1]
df['v10'] = [2]
df['v11'] = [1]
df['v12'] = [2]
df['v13'] = [1]
df['v14'] = [2]

# 提取需要重命名的列(排除id)
value_cols = [col for col in df.columns if col != 'id']
new_columns = ['id']  # 保留id列

# 每3列一组处理
for group_idx in range(0, len(value_cols), 3):
    # 取出当前组的3列
    group_cols = value_cols[group_idx:group_idx+3]
    # 生成新列名:v{组号}{0/1/2},比如组0是v00、v01、v02,组1是v10、v11、v12
    group_num = group_idx // 3
    new_names = [f"v{group_num}{i}" for i in range(3)]
    new_columns.extend(new_names)

# 重命名DataFrame列
df.columns = new_columns

print(df)

代码解释

  • 先提取除id外的所有需要重命名的列,避免修改id列。
  • 通过range(0, len(value_cols), 3)实现每3列一组的遍历,group_idx是每组起始列的索引。
  • 每组的编号group_num由group_idx // 3得到,比如第0-2列对应组0,第3-5列对应组1,以此类推。
  • 对每组内的3列,生成格式为v{组号}{0/1/2}的新列名,确保列名唯一且符合需求。
  • 最后将新列名列表赋值给df.columns完成重命名。

运行后输出结果与期望完全一致:

id  v00  v01  v02  v10  v11  v12  v20  v21  v22  v30  v31  v32  v40  v41  v42
0   1    2    1    2    1    2    1    2    1    2    1    2    1    2    1    2

内容的提问来源于stack exchange,提问作者Sadcow

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.09 02:50:33