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

pandas DataFrame计算日期与今日差值结果异常问题求解

问题根因

你的计算结果异常是因为日期解析逻辑完全错误:

  • 你通过字符串拆分只提取了日期中的月份数字(比如2018/5/21拆分后取到的是整数5),丢弃了年、日信息
  • 当你把单独的整数传入pd.to_datetime()时,pandas会默认将整数解析为Unix时间戳,基准时间是1970-01-01,转出来的时间全是1970年1月的极早期时间点,和当前日期做差自然会得到-19000余天的错误结果。
正确实现方案

不要拆分日期字符串单独取月份,先把完整的日期列整体解析为datetime类型,再做差值计算:

import pandas as pd

# 完整解析日期列,指定格式提升解析效率、避免歧义
df_transactions['date_parsed'] = pd.to_datetime(df_transactions['date'], format='%Y/%m/%d')

# 计算与当日0点的时间差(normalize()会把当前时间的时分秒置为0)
time_difference = df_transactions['date_parsed'] - pd.Timestamp.now().normalize()

# 如果需要提取月份字段,在解析完成的日期列上直接取属性即可,无需拆分字符串
df_transactions['month'] = df_transactions['date_parsed'].dt.month

print(time_difference)

额外说明

  • 如果需要拿到时间差对应的整数天数,可以直接调用.dt.days属性:diff_in_days = time_difference.dt.days
  • 如果需要计算间隔整月数,不要直接对月份数字做减法,要基于解析后的完整日期,通过年、月字段组合计算,避免跨年时结果错误。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.03 03:09:42