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

Python中如何将整数格式日期转换为Datetime类型

整数日期转Datetime及年份提取解决方案

你的问题出在直接对整数列用切片[0:2]——这会取DataFrame的前2行数据,而不是截取日期数字的前两位,自然得到错误的浮点数结果。下面是完整的解决方法:

1. 先把整数日期转成字符串

要截取日期的年份部分,得先把整数类型的DATE列转为字符串:

df['DATE_str'] = df['DATE'].astype(str)

2. 转换为标准Datetime类型

注意你的数据里有20123124(2020年12月31日24时),但标准Datetime不支持24:00,得先把24替换成00,再给对应行加1天:

import pandas as pd

# 替换末尾的24为00,标记需要加天的行
df['DATE_str'] = df['DATE_str'].str.replace('24$', '00')
df['need_add_day'] = df['DATE'].astype(str).str.endswith('24')

# 按格式转Datetime,%y对应两位年份(自动补20xx)
df['datetime'] = pd.to_datetime(df['DATE_str'], format='%y%m%d%H')

# 给24点的行加1天,变成次日0点
df.loc[df['need_add_day'], 'datetime'] += pd.Timedelta(days=1)

如果你的日期是4位年份格式,把format改成%Y%m%d%H即可。

3. 提取年份(两种方式)

方式一:从Datetime列直接提取

转成Datetime后,提取年份最省心:

# 提取两位年份(18、20)
df['Year_two'] = df['datetime'].dt.year % 100
# 提取四位年份(2018、2020)
df['Year_four'] = df['datetime'].dt.year

方式二:直接从字符串提取

如果不想转Datetime,直接从字符串截取:

# 取前两位当两位年份
df['Year_two'] = df['DATE_str'].str[:2].astype(int)
# 补成四位年份(这里假设年份是2000年后的,可根据需求调整)
df['Year_four'] = 2000 + df['Year_two']

完整测试代码

import pandas as pd

# 模拟你的数据
df = pd.DataFrame({'DATE': [18010101, 20123124]})

# 执行转换流程
df['DATE_str'] = df['DATE'].astype(str)
df['DATE_str'] = df['DATE_str'].str.replace('24$', '00')
df['need_add_day'] = df['DATE'].astype(str).str.endswith('24')
df['datetime'] = pd.to_datetime(df['DATE_str'], format='%y%m%d%H')
df.loc[df['need_add_day'], 'datetime'] += pd.Timedelta(days=1)
df['Year_two'] = df['datetime'].dt.year % 100
df['Year_four'] = df['datetime'].dt.year

print(df)

运行后输出:

DATE DATE_str  need_add_day            datetime  Year_two  Year_four
0  18010101  18010101         False 2018-01-01 01:00:00        18       2018
1  20123124  20123100          True 2021-01-01 00:00:00        21       2021

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.22 14:15:34