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

pandas中按索引范围批量修改列名的日期时间格式

问题原因

你之前的操作逻辑错误才导致数据损坏:df.iloc[:, 13:] = 重命名后的子df是对DataFrame的数据区域做切片赋值,右侧重命名后的子df列名已经更新为Sep 2018这类新名称,和原df对应区域的旧列名不匹配,pandas赋值时会默认按列名对齐,找不到匹配列就会生成缺失值,覆盖原有数据。

修改列名不需要碰数据区域,只要调整df.columns的对应部分即可,两种稳妥实现方式如下:


方法1:直接替换指定区间的列名

如果你的列名本身已经是Timestamp类型:

# 生成第13列及之后的新列名
new_cols = ['{:%b %Y}'.format(col) for col in df.columns[13:]]
# 替换原列名对应区间
df.columns = df.columns[:13].tolist() + new_cols

如果你的列名是字符串格式的时间戳,先做日期转换即可:

import pandas as pd
new_cols = pd.to_datetime(df.columns[13:]).strftime('%b %Y').tolist()
df.columns = df.columns[:13].tolist() + new_cols

方法2:通过rename方法映射修改

这种方法不需要拼接列名列表,出错概率更低:

import pandas as pd
# 生成旧列名到新列名的映射字典
col_mapper = {
    old_col: pd.to_datetime(old_col).strftime('%b %Y')
    for old_col in df.columns[13:]
}
# 仅修改列名,不影响任何数据
df.rename(columns=col_mapper, inplace=True)

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.28 18:27:07