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

Python/Pandas批量重命名Unnamed开头列为1960-2019年份

pandas批量重命名Unnamed开头列为1960-2019年份实现方案

核心逻辑是遍历列名,保留非Unnamed开头的原有列名,对匹配到的Unnamed列按顺序替换为对应年份即可,具体实现如下:

  • 前置校验:先确认待替换列的数量和年份序列长度匹配,避免列名错位
  • 列名替换:遍历所有列名,按规则生成新列名列表后整体赋值给DataFrame的columns属性
  • 结果校验:替换完成后打印前几行数据确认列名符合预期

代码实现

import pandas as pd

# df为你读取完成的待处理DataFrame
# 第一步:生成1960到2019的年份序列,range左闭右开,结束值传2020
year_sequence = list(range(1960, 2020))

# 第二步:校验待替换列数量
unnamed_count = sum(1 for col in df.columns if str(col).startswith("Unnamed:"))
if unnamed_count != len(year_sequence):
    raise ValueError(f"待替换Unnamed列数量为{unnamed_count},和年份序列长度{len(year_sequence)}不匹配,请调整年份范围")

# 第三步:构造新列名
new_columns = []
year_pointer = 0
for col in df.columns:
    if str(col).startswith("Unnamed:"):
        new_columns.append(year_sequence[year_pointer])
        year_pointer += 1
    else:
        new_columns.append(col)

# 第四步:替换列名
df.columns = new_columns

极简写法(不需要前置校验时使用)

如果已经确认列数量完全匹配,可以用更短的代码实现:

year_iter = iter(range(1960, 2020))
df.columns = [next(year_iter) if str(col).startswith("Unnamed:") else col for col in df.columns]

提示:如果读取文件时就不希望生成Unnamed开头的列,可以在pd.read_excel()/pd.read_csv()时根据实际表结构传入header参数指定表头行,从源头避免无表头列被自动命名为Unnamed的问题。

相关数据示例:
数据示例

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.27 02:27:21