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

如何将Pandas DataFrame倒数第三列列名转为m/d/y日期格式?

问题描述

现有Pandas DataFrame结构如下:

SectorApr 2022May 2022Jun 20221Y Min1Y Max
A1005120505
B1820090909
C0209120202

需求说明:

  • 最后两列1Y Min、1Y Max列名固定
  • 前几列日期列名格式为%b %Y(如Apr 2022),会随最新月份动态变化
  • 需要将倒数第三列(对应最新月份的列)的列名修改为m/d/y格式(如6/30/2022,即当月最后一天)

预期结果:

SectorApr 2022May 20226/30/20221Y Min1Y Max
A1005120505
B1820090909
C0209120202

现有代码上下文:

df.columns = pd.Series(df.columns[:-2]).apply(lambda x: x.strftime('%b %Y')).to_list() + ["1Y Min", "1Y Max"]

曾尝试的无效代码:

df[df[-3]] = pd.to_datetime[df[df[-3]].apply(lambda x: x.strftime('%b %Y')
解决方案

直接操作列名列表,定位倒数第三列并修改格式即可,代码如下:

# 获取当前列名的列表
cols = df.columns.tolist()

# 提取倒数第三列的列名,解析为日期对象
target_col_name = cols[-3]
date = pd.to_datetime(target_col_name)

# 获取该月最后一天,格式化为m/d/y格式(无前置零)
last_day = date + pd.offsets.MonthEnd(0)
new_col_name = f"{last_day.month}/{last_day.day}/{last_day.year}"

# 更新列名列表并重新赋值给DataFrame
cols[-3] = new_col_name
df.columns = cols

代码说明:

  1. cols = df.columns.tolist():将列名转为列表,方便修改单个元素
  2. pd.to_datetime(target_col_name):把Jun 2022这类字符串转成可操作的datetime对象
  3. date + pd.offsets.MonthEnd(0):自动计算该月份的最后一天(比如Jun 2022对应6/30/2022)
  4. 用字符串拼接生成m/d/y格式的列名,避免跨系统的前置零格式问题(如果需要保留前置零,改用last_day.strftime("%m/%d/%Y")即可)

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.03 11:20:37