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

如何阻止Pandas将Excel月-年格式表头转为日期格式?

解决Pandas读取Excel时强制保留月-年格式表头为字符串

方法1:先读取无表头数据,再手动设置字符串表头

这种方法先跳过表头读取所有数据,再提取第一行转为字符串作为表头,确保保留原格式:

import pandas as pd

# 读取文件,不指定表头(所有行按数据处理)
raw_data = pd.read_excel('test.xlsx', engine='openpyxl', header=None)
# 提取第一行并转为字符串类型作为新表头
custom_header = raw_data.iloc[0].astype(str)
# 从第二行开始取有效数据,并设置表头
df = raw_data[1:].copy()
df.columns = custom_header

方法2:直接读取后将日期类型列名转为指定格式字符串

如果Pandas已将表头识别为datetime类型,可通过格式化日期对象转为你需要的月-年字符串:

import pandas as pd

df = pd.read_excel('test.xlsx', engine='openpyxl')
# 将datetime类型的列名格式化为"月-年"字符串(按需调整格式符)
df.columns = [col.strftime("%m-%Y") for col in df.columns]

注意:格式符可按需调整,%m是两位月份(01-12),%b是缩写月份名(Jan-Dec),%B是完整月份名,%Y是四位年份。

方法3:通过openpyxl获取单元格显示文本作为表头

如果Excel中表头是自定义格式的日期(底层存日期值但显示为月-年),直接用openpyxl读取单元格的显示文本,确保完全匹配Excel中的显示:

import pandas as pd
from openpyxl import load_workbook

# 用openpyxl加载工作簿,获取表头行的显示文本
wb = load_workbook('test.xlsx')
ws = wb.active
header = [cell.text for cell in ws[1]]  # ws[1]代表第一行(表头行)

# 读取Excel数据,跳过表头行
df = pd.read_excel('test.xlsx', engine='openpyxl', header=1)
# 设置自定义表头
df.columns = header

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.16 20:35:38