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

pandas str类型creation_date列计算距今天数字段报错如何解决

错误原因

  • 你使用的日期解析格式符%m/%d/%Y和实际日期格式完全不匹配:给出的示例格式是2020-02-06 11:35:17+00:00,属于「年-月-日 时:分:秒+时区偏移」的结构,用%m/%d/%Y会直接解析失败。
  • date.strptime是Python标准库的方法,只能接收单个字符串输入,不能直接作用于pandas的Series整列数据,直接传入整列会抛出类型错误。
  • 计算差值的顺序写反了,应该是「今日日期 - 创建日期」才能得到正数的间隔天数,反过来会得到负数。同时创建日期带UTC时区标识,你用date.today()生成的是无时区的本地日期,二者直接运算会报时区不匹配的错误。
  • 日期相减得到的是timedelta类型,需要额外提取.days属性才能拿到纯数字的天数结果。

正确实现代码

import pandas as pd

# 把字符串类型的creation_date转成带时区的datetime类型
df['creation_date'] = pd.to_datetime(df['creation_date'], format='%Y-%m-%d %H:%M:%S%z')
# 生成和源数据同时区的今日日期(源数据为UTC+0,所以用utcnow并保留时区)
today = pd.Timestamp.now(tz='UTC').floor('D')
# 计算间隔天数,提取days属性
df['days_since_creation'] = (today - df['creation_date']).dt.days

如果不需要严格匹配时区,也可以转成无时区的datetime处理,代码更简洁:

import pandas as pd

df['creation_date'] = pd.to_datetime(df['creation_date']).dt.tz_localize(None)
today = pd.Timestamp.today().floor('D')
df['days_since_creation'] = (today - df['creation_date']).dt.days

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.25 23:54:03