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

如何为pandas DataFrame的日期列添加curr_week、prev_week前缀完成重命名

Pandas DataFrame列重命名实现方案

问题原因

你原有代码的核心问题是强依赖列的原始排序,一旦数据导入时列顺序发生变化,就会出现前缀匹配错误的情况。同时如果后续扩展为多周数据,硬编码索引的写法也没有可复用性。如果你的列名是datetime类型而非字符串,直接拼接字符串也会导致重命名失效。

正确实现方法

方案1:直接替换列名(推荐,逻辑简单高效)

先对列名按日期降序排序,确保最新日期对应curr_week前缀,更早的日期对应prev_week前缀,再直接替换列名:

import pandas as pd

# 你的原始DataFrame
df=pd.DataFrame(data={'2021-11-21':['10','20'],'2021-11-14':['39','21']})

# 可选:如果列名是datetime类型,先转成字符串格式
# df.columns = df.columns.strftime('%Y-%m-%d')

# 按日期降序排序列名
sorted_cols = sorted(df.columns, reverse=True)
# 生成新列名
df.columns = [f'curr_week_{sorted_cols[0]}', f'prev_week_{sorted_cols[1]}']

方案2:使用rename方法实现

如果你需要保留其他列名不变,仅修改这两列,可以用rename方法:

# 可选:如果列名是datetime类型,先转成字符串格式
# df.columns = df.columns.strftime('%Y-%m-%d')

sorted_cols = sorted(df.columns, reverse=True)
col_mapper = {
    sorted_cols[0]: f'curr_week_{sorted_cols[0]}',
    sorted_cols[1]: f'prev_week_{sorted_cols[1]}'
}
df = df.rename(columns=col_mapper)

注意:两种方案都自动适配列的原始顺序,只要是两列周度日期数据,都可以正确匹配前缀。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.25 05:24:00