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

Python筛选90天内记录:日期差值计算与类型转换问题

问题与解决方案:计算日期差并筛选记录

需求

基于已有的datetime格式日期列(含25000+行数据)新增一列,计算该列日期与当日日期的天数差,同时筛选出天数差≤90的记录。

示例输入数据

id     date        
 1     2022-3-17
 2     2021-12-12
 3     2023-1-13

期望输出结果

id      date          days
 1      2022-3-17     347
 2      2021-12-12    442
 3      2023-1-13     45

遇到的问题

执行以下代码将当日日期转为datetime类型时,结果显示为时间戳:

today = date.today()
today = pd.to_datetime(today)

解决方案

1. 正确获取当日datetime(避免显示异常)

date.today()返回的是datetime.date类型,直接用pd.Timestamp.today().normalize()能获取不带时分秒的当日datetime,既保证类型正确,也能避免时间戳样式的显示问题:

import pandas as pd
from datetime import date

# 获取仅含日期部分的当日datetime(无时分秒)
today = pd.Timestamp.today().normalize()

2. 计算天数差并筛选记录

假设你的数据框名为df,且date列已为datetime格式,执行以下代码即可完成需求:

# 计算当日与date列的天数差(结果为正整数)
df['days'] = (today - df['date']).dt.days

# 筛选出天数差≤90的记录
filtered_df = df[df['days'] <= 90]

关于时间戳显示的说明

实际上pd.to_datetime(date.today())返回的是datetime64类型,并非真的时间戳,只是部分环境下的默认显示问题。可以通过print(type(today))确认数据类型,若要强制显示为日期格式,可设置:

pd.set_option('display.max_columns', None)

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.30 09:42:48