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

Pandas中拆分整数日期列转换为datetime报错求助

问题解决:将8位日期数值转换为datetime类型

错误原因

你的date_checkout_y列是数值类型(int/float),而str.split是字符串专属方法,数值列无法调用str属性,因此执行代码时会报错。

最优解决方案:直接解析为datetime

你的日期格式是标准的YYYYMMDD(如18000809对应1800年8月9日),无需拆分,用pandas.to_datetime直接指定格式即可完成转换,这是最高效的方式:

import pandas as pd

# 直接转换数值列为datetime
df['date_checkout_y'] = pd.to_datetime(df['date_checkout_y'], format='%Y%m%d')

如果担心数值类型的解析问题,可以先转成字符串再处理:

df['date_checkout_y'] = pd.to_datetime(df['date_checkout_y'].astype(str), format='%Y%m%d')

可选方案:拆分后转换(仅作演示)

如果一定要通过拆分年/月/日的方式实现,步骤如下:

  1. 将数值列转为字符串
  2. 按位置拆分年、月、日
  3. 组合为datetime类型
# 转字符串
df['date_str'] = df['date_checkout_y'].astype(str)
# 拆分年、月、日
df['year'] = df['date_str'].str[:4]
df['month'] = df['date_str'].str[4:6]
df['day'] = df['date_str'].str[6:8]
# 组合成datetime
df['date_checkout_y'] = pd.to_datetime(df[['year', 'month', 'day']])
# 删除临时列
df.drop(['date_str', 'year', 'month', 'day'], axis=1, inplace=True)

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.25 00:18:22