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

如何将仅含YYYY格式年份的列转为日期时间格式且不添加月日?

Pandas年份转日期时间格式不显示月日的解决方法

核心说明

Pandas的datetime类型本质是包含完整时间戳的,必须包含年、月、日信息,无法直接创建只有年份的datetime对象。但可以通过以下两种方式实现“仅展示年份”或“存储年份周期”的需求:


方法一:保留datetime类型,修改显示格式

如果需要保留datetime的时间运算能力(比如年份加减、时间排序),只是让数据显示为纯年份,可以设置显示格式:

# 先将Year列转为datetime类型
df['Year'] = pd.to_datetime(df['Year'], format='%Y')
# 设置全局日期显示格式为仅年份
pd.options.display.date_format = '%Y'
# 或者针对单个列设置显示样式(需使用style模块)
display(df.style.format({'Year': lambda x: x.strftime('%Y')}))

此时数据底层仍是完整的datetime类型,但展示时只显示年份。

方法二:使用Period类型存储年份周期(推荐)

如果不需要datetime的时间戳特性,仅需处理年份维度的数据,推荐使用Pandas的Period类型,直接存储年份周期:

# 转换为年份周期类型并设置索引
df = df.assign(Year=pd.to_datetime(df.Year, format='%Y').dt.to_period('Y')).set_index('Year')

这种方式存储的是2015这样的年份周期对象,没有多余的月日信息,同时支持年份相关的周期运算。


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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.15 06:40:28