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

如何在Pandas中使用pd.DataFrame.query()正确查询日期?

解决pandas query函数查询完整日期的问题

问题原因

直接写Date>01-01-2019时,pandas会把01-01-2019解析成整数减法运算(01减01再减2019,结果为-2019),导致用int类型和datetime64[ns]类型的日期列做对比,触发类型错误。

正确写法

  • 用引号包裹日期字符串:将完整日期放在单引号或双引号内,pandas会自动识别为日期字符串并与datetime列做比对
    fil1.query('Date > "2019-01-01"')
    # 也可以用单引号
    fil1.query("Date > '2019-01-01'")
    
  • 提前定义日期变量并引用:如果需要复用目标日期,先定义datetime变量,在query中用@符号引用
    from datetime import datetime
    target_date = datetime(2019, 1, 1)
    fil1.query('Date > @target_date')
    
  • 在query内用pd.Timestamp构造日期:直接在查询表达式里用pandas的Timestamp构造目标日期
    fil1.query('Date > pd.Timestamp("2019-01-01")')
    

补充说明

单独对比年份时fil1.query('Date>2019')能正常运行,是因为pandas会自动把整数2019转换为对应的datetime对象(即Timestamp('2019-01-01 00:00:00')),但这个自动转换逻辑仅适用于单独的年份数值,不能直接套用到完整日期的写法上。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.06 06:10:28