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

如何将Pandas DataFrame日期列转换为对应年份的最后一天?

将Pandas DataFrame的日期转换为对应年份的最后一天

问题场景

现有如下Pandas DataFrame:

Acount              Type   Id               Date         Value          Per
0   Exp                 P      IQ               2016-03-31  -23421.170324   3M
1   Exp                 P      IQ               2017-03-31  -44803.599908   3M
2   Exp                 P      IQ               2018-03-31  -29294.611346   3M
3   Exp                 P      IQ               2019-03-31  -9463.281704    3M

需要将Date列转换为对应年份的12月31日,得到目标格式。


解决方案

以下是几种高效实现方式:

方法1:通过apply构造年末时间戳

先确保Date列为datetime类型,再逐行替换为当年最后一天:

import pandas as pd

# 转换为datetime类型(若原列已是则可省略)
df['Date'] = pd.to_datetime(df['Date'])

# 替换为当年12月31日
df['Date'] = df['Date'].apply(lambda x: pd.Timestamp(x.year, 12, 31))

方法2:利用周期(Period)的年末方法

这是更简洁的内置方法,直接通过周期转换获取年末时间:

df['Date'] = pd.to_datetime(df['Date'])
df['Date'] = df['Date'].dt.to_period('Y').dt.end_time

方法3:字符串拼接转换

通过提取年份拼接日期字符串,再转回datetime类型:

df['Date'] = pd.to_datetime(df['Date'])
df['Date'] = pd.to_datetime(df['Date'].dt.year.astype(str) + '-12-31')

验证结果

执行任意方法后,DataFrame将变为:

Acount Type  Id       Date         Value  Per
0     Exp    P  IQ 2016-12-31 -23421.170324  3M
1     Exp    P  IQ 2017-12-31 -44803.599908  3M
2     Exp    P  IQ 2018-12-31 -29294.611346  3M
3     Exp    P  IQ 2019-12-31  -9463.281704  3M

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.08 19:20:20