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
相关产品推荐
相关产品推荐

