如何在Pandas中筛选含今日在内的近3天interview_start数据?
解决方法
问题根源
原代码的时间范围是4天前00:00:00 到 今日00:00:00,今日产生的记录(interview_start时间晚于今日0点)不在这个区间内,所以被过滤掉了。调整days=3只会把起始时间改成3天前0点,结束时间还是今日0点,依然无法包含今日数据。
方案一:调整时间区间覆盖今日全天
修改代码中的时间范围,把结束时间设为明日00:00:00,这样就能包含今日0点到23:59:59的所有记录:
from datetime import date import pandas as pd today = date.today() # 起始:3天前的0点 start_date = pd.to_datetime(today) - pd.Timedelta(days=3) # 结束:明日0点,覆盖今日全天数据 end_date = pd.to_datetime(today) + pd.Timedelta(days=1) df = df.set_index('interview_start') df = df.sort_index() # 左闭右开区间,包含3天前到今日的所有记录 df = df.loc[start_date:end_date].reset_index()
方案二:直接匹配日期(更直观)
提取interview_start的日期部分,直接筛选今日、昨日、前天的记录,避免时间戳精度问题:
from datetime import date, timedelta import pandas as pd today = date.today() # 生成需要保留的3天日期集合 target_dates = {today - timedelta(days=i) for i in range(3)} # 转换为日期类型后筛选 df = df[df['interview_start'].dt.date.isin(target_dates)]
内容的提问来源于stack exchange,提问作者Asif Sayed
相关产品推荐
相关产品推荐

