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

如何使用pandas将8位数字格式的日期拆分为年、月、日三个独立字段

pandas拆分8位数字日期为年月日的实现方法

你现有的数据框存储的是8位整数格式的日期,可通过以下几种方法实现拆分:

方法一:转为datetime类型后提取(推荐)

该方法得到的日期字段后续可直接用于时间序列运算,适用性最强:

import pandas as pd

# 示例数据(你已有可跳过)
x = pd.DataFrame([20210901,20210902, 20210903, 20210904])

# 转为标准datetime格式
x['date'] = pd.to_datetime(x[0].astype(str), format='%Y%m%d')

# 单独提取年、月、日列
x['year'] = x['date'].dt.year
x['month'] = x['date'].dt.month
x['day'] = x['date'].dt.day

# 生成[年,月,日]格式的列表列
x['date_list'] = x.apply(lambda row: [row['year'], row['month'], row['day']], axis=1)

方法二:字符串切片拆分

无需转日期格式,直接对字符串按位截取:

date_str = x[0].astype(str)
x['year'] = date_str.str[:4].astype(int)
x['month'] = date_str.str[4:6].astype(int)
x['day'] = date_str.str[6:].astype(int)

# 生成列表列
x['date_list'] = x.apply(lambda row: [row['year'], row['month'], row['day']], axis=1)

方法三:数学运算拆分

直接对整数做整除、取模运算拆分:

x['year'] = x[0] // 10000
x['month'] = (x[0] % 10000) // 100
x['day'] = x[0] % 100

# 无需单独生成年月日列,直接得到列表列的简写写法
x['date_list'] = x[0].apply(lambda num: [num//10000, (num%10000)//100, num%100])

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.25 23:06:04