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

如何用Python筛选距今日90天范围内的日期数据

筛选Python数据集中过去90天的记录

下面分两种常用场景给你解决方案,都是基于datetime和timedelta的基础用法:

方法一:用Pandas处理表格数据(推荐)

如果你的数据集是表格形式(比如CSV、Excel或者你给出的这种结构化数据),用Pandas处理最方便高效:

from datetime import date, timedelta
import pandas as pd

# 先把你的数据集转成DataFrame
data = {
    "ID": [1, 2, 3],
    "Date": ["12/11/2021", "2/12/2022", "3/02/2023"],
    "Employed?": ["Y", "Y", "Y"]
}
df = pd.DataFrame(data)

# 关键:把字符串格式的Date列转成datetime类型
# 你的日期格式是「月/日/年」,所以指定format='%m/%d/%Y'避免解析错误
df['Date'] = pd.to_datetime(df['Date'], format='%m/%d/%Y')

# 计算90天前的日期
ninety_days_ago = date.today() - timedelta(days=90)

# 用布尔索引筛选符合条件的记录
filtered_df = df[df['Date'] >= ninety_days_ago]

# 输出结果
print(filtered_df)

运行后就会得到你想要的仅包含最近90天记录的表格。

方法二:原生Python处理小型数据集

如果不用Pandas,用原生列表/字典也能实现:

from datetime import date, timedelta
from datetime import datetime

# 原始数据集(列表嵌套字典)
data = [
    {"ID": 1, "Date": "12/11/2021", "Employed?": "Y"},
    {"ID": 2, "Date": "2/12/2022", "Employed?": "Y"},
    {"ID": 3, "Date": "3/02/2023", "Employed?": "Y"}
]

ninety_days_ago = date.today() - timedelta(days=90)
filtered_data = []

# 遍历每条记录,筛选符合条件的
for record in data:
    # 把字符串日期转成date对象
    record_date = datetime.strptime(record['Date'], '%m/%d/%Y').date()
    if record_date >= ninety_days_ago:
        filtered_data.append(record)

# 打印筛选后的结果
for item in filtered_data:
    print(f"ID: {item['ID']}, Date: {item['Date']}, Employed?: {item['Employed?']}")

重要注意点

  • 日期格式匹配:一定要保证strptime或pd.to_datetime的format参数和你的日期字符串格式一致。比如你的例子是「月/日/年」,用%m/%d/%Y;如果是「日/月/年」就要改成%d/%m/%Y,否则会解析出错。
  • 时区问题:如果你的数据里的日期包含时区信息,要先统一时区再做比较(比如转成UTC或者本地时区),避免日期比较出现偏差。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.26 16:02:27