使用Pandas query筛选日期范围时出现语法错误的技术咨询
解决DataFrame日期区间筛选的报错问题
1. 修正语法错误
报错原因是字符串与between关键字之间缺少空格,导致解析失败。修正后的query语句:
df.query("'2021-07-30' between Start and End")
注意字符串、between、and两侧都要保留空格。
2. 确保日期列是datetime类型
如果Start和End列是字符串格式,直接比较可能不符合日期逻辑(字符串按字符顺序比较,会出现错误结果)。先将列转换为datetime类型:
import pandas as pd df['Start'] = pd.to_datetime(df['Start']) df['End'] = pd.to_datetime(df['End'])
转换后再执行筛选,会按照实际日期逻辑比较,结果更准确。
3. 替代筛选方式(无需query)
如果不想用query,可以直接用布尔索引筛选,逻辑更直观:
target_date = pd.to_datetime('2021-07-30') filtered_df = df[(df['Start'] <= target_date) & (target_date <= df['End'])]
内容的提问来源于stack exchange,提问作者Somanshu
相关产品推荐
相关产品推荐

