Pandas如何筛选指定日期处于有效期区间的DataFrame行数据
pandas DataFrame 有效期内数据筛选方案
核心逻辑
判断指定日期是否落在start到end的闭区间内即可,即满足 start ≤ 目标日期 ≤ end 的行即为符合要求的有效行。
操作步骤
- 首先需要将
start、end两列转换为pandas datetime类型,避免字符串比较出现预期外的结果 - 构造布尔索引完成过滤,注意逻辑与运算符
&两侧的条件必须分别用括号包裹,避免优先级错误
完整代码示例
import pandas as pd # 构造示例DataFrame df = pd.DataFrame({ 'idx': [0, 1, 2, 3], 'start': ['2019-08-23', '2018-01-01', '2020-04-01', '2018-03-24'], 'end': ['2019-12-31', '2018-07-05', '2020-11-27', '2018-06-18'] }) # 转换日期列为datetime格式 df['start'] = pd.to_datetime(df['start']) df['end'] = pd.to_datetime(df['end']) # 定义目标查询日期 target_date = pd.to_datetime('2018-05-16') # 执行过滤 filtered_df = df[(df['start'] <= target_date) & (df['end'] >= target_date)] print(filtered_df)
输出结果
idx start end 1 1 2018-01-01 2018-07-05 3 3 2018-03-24 2018-06-18
内容的提问来源于stack exchange,提问作者Rahrbach GmbH
相关产品推荐
相关产品推荐

