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

Python Pandas datetime列天数计算问题:结果与预期不符

问题分析与解决方法

核心原因

你用datetime.datetime.now()获取的是带时分秒的当前时间,而你的Created列大概率是精确到日期(时分秒为00:00:00)。举个例子:

  • Created: 2024-05-01 00:00:00
  • 当前时间: 2024-05-03 09:30:00

两者的时间差是2天9小时30分,dt.days会取整数部分(向下取整)得到2,但你预期的是按自然日跨度算3天,这就出现了计算偏差。

解决步骤

1. 用当天0点时间替代当前时分秒时间

把datetime.datetime.now()换成当天的0点时间,确保计算的是完整的日期差:

import pandas as pd
import datetime

# 方法1:用pandas的normalize获取当天0点
df['aging_cal'] = (df['ClosedDate'].fillna(pd.Timestamp.today().normalize()) - df['Created']).dt.days

# 方法2:用datetime组合出当天0点
today_0 = datetime.datetime.combine(datetime.date.today(), datetime.time.min)
df['aging_cal'] = (df['ClosedDate'].fillna(today_0) - df['Created']).dt.days

2. 若需要包含起始日的天数统计

如果你的预期是「从Created当天开始算第一天」(比如5.1到5.3算3天),直接在计算结果上加1即可:

df['aging_cal'] = (df['ClosedDate'].fillna(pd.Timestamp.today().normalize()) - df['Created']).dt.days + 1

验证示例

假设你的数据是:

CreatedClosedDate
2024-05-01 00:00:00NaN
2024-05-01 00:00:002024-05-03 00:00:00
  • 用方法1计算:两行结果均为2天(按时间差的整数天数算)
  • 用方法2计算:两行结果均为3天(符合你的预期)

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.16 04:16:01