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

Pandas日期筛选求助:筛选指定日期之后的数据

问题解决:筛选DataFrame中晚于指定日期的行

你的代码未得到预期结果的核心原因是:date列存储的是字符串类型,而非Pandas可识别的datetime格式。直接用字符串与pd.Timestamp比较会遵循字符串排序规则,无法正确实现日期逻辑判断。

解决方案步骤

  • 第一步:将date列转换为Pandas的datetime类型(关键步骤)
  • 第二步:用转换后的日期列与指定日期进行比较筛选

修改后的代码

场景1:读取Excel文件时直接解析日期

import pandas as pd
# 读取时指定解析date列,同时设置dayfirst=True适配日/月/年格式
df1 = pd.read_excel('test_date.xlsx', engine='openpyxl', parse_dates=['date'], dayfirst=True)
start_date = pd.Timestamp(2024, 5, 1)
filtered_date = df1.loc[df1['date'] > start_date]
filtered_date.to_csv("filtered.csv", index=False)

场景2:使用测试生成数据时转换日期

import pandas as pd

data = {'serial': [10037, 10140, 10167, 10173, 10175, 10184, 10187],
        'date': ['28/05/2020 00:00', '14/09/2021 00:00', '27/05/2023 00:00',
                 '15/05/2024 00:00', '21/07/2024 00:00', '21/07/2024 00:00',
                 '19/06/2024 00:00']}

df1 = pd.DataFrame(data)
# 将字符串格式的date列转换为datetime类型,指定dayfirst=True避免解析错误
df1['date'] = pd.to_datetime(df1['date'], dayfirst=True)

start_date = pd.Timestamp(2024, 5, 1)
filtered_date = df1.loc[df1['date'] > start_date]
print(filtered_date)

验证方法

执行print(df1['date'].dtype),若输出为datetime64[ns],说明日期列已正确转换,此时再做比较筛选就能得到预期结果(晚于2024年5月1日的行)。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.25 13:17:41