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

如何在Pandas中筛选包含2022-02月份的DataFrame行

Pandas筛选包含2022年2月日期的DataFrame行

需求:从给定的日期DataFrame中筛选出所有包含2022-02月份日期的行(包括March行中含有该月份日期的记录)。

尝试过的错误方法

calendar.loc[(calendar >= '2022-02-01') & (calendar < '2020-03-01')]
calendar[calendar == '2022-02-01']

原始DataFrame数据

Sunday      Monday      Tuesday     Wednesday   Thursday    Friday      Saturday
January     2021-12-26  2021-12-27  2021-12-28  2021-12-29  2021-12-30  2021-12-31  2022-01-01
January     2022-01-02  2022-01-03  2022-01-04  2022-01-05  2022-01-06  2022-01-07  2022-01-08
January     2022-01-09  2022-01-10  2022-01-11  2022-01-12  2022-01-13  2022-01-14  2022-01-15
January     2022-01-16  2022-01-17  2022-01-18  2022-01-19  2022-01-20  2022-01-21  2022-01-22
January     2022-01-23  2022-01-24  2022-01-25  2022-01-26  2022-01-27  2022-01-28  2022-01-29
February    2022-01-30  2022-01-31  2022-02-01  2022-02-02  2022-02-03  2022-02-04  2022-02-05
February    2022-02-06  2022-02-07  2022-02-08  2022-02-09  2022-02-10  2022-02-11  2022-02-12
February    2022-02-13  2022-02-14  2022-02-15  2022-02-16  2022-02-17  2022-02-18  2022-02-19
February    2022-02-20  2022-02-21  2022-02-22  2022-02-23  2022-02-24  2022-02-25  2022-02-26
March       2022-02-27  2022-02-28  2022-03-01  2022-03-02  2022-03-03  2022-03-04  2022-03-05
March       2022-03-06  2022-03-07  2022-03-08  2022-03-09  2022-03-10  2022-03-11  2022-03-12
March       2022-03-13  2022-03-14  2022-03-15  2022-03-16  2022-03-17  2022-03-18  2022-03-19
March       2022-03-20  2022-03-21  2022-03-22  2022-03-23  2022-03-24  2022-03-25  2022-03-26
April       2022-03-27  2022-03-28  2022-03-29  2022-03-30  2022-03-31  2022-04-01  2022-04-02
April       2022-04-03  2022-04-04  2022-04-05  2022-04-06  2022-04-07  2022-04-08  2022-04-09
....

期望筛选结果

Sunday      Monday      Tuesday     Wednesday   Thursday    Friday      Saturday
February    2022-01-30  2022-01-31  2022-02-01  2022-02-02  2022-02-03  2022-02-04  2022-02-05
February    2022-02-06  2022-02-07  2022-02-08  2022-02-09  2022-02-10  2022-02-11  2022-02-12
February    2022-02-13  2022-02-14  2022-02-15  2022-02-16  2022-02-17  2022-02-18  2022-02-19
February    2022-02-20  2022-02-21  2022-02-22  2022-02-23  2022-02-24  2022-02-25  2022-02-26
March       2022-02-27  2022-02-28  2022-03-01  2022-03-02  2022-03-03  2022-03-04  2022-03-05

错误原因分析

  1. 第一种方法存在两个问题:
    • 日期范围写错,2020-03-01应为2022-03-01;
    • 直接对整个DataFrame做比较会得到布尔矩阵,未通过any(axis=1)判断每行是否存在符合条件的元素,无法正确筛选目标行。
  2. 第二种方法仅筛选完全等于2022-02-01的行,范围过窄,不符合“包含任意2022年2月日期”的需求。

正确解决方法

步骤1:转换日期列为datetime类型

若DataFrame中的日期是字符串格式,先转换为datetime类型以支持日期操作:

import pandas as pd
calendar = calendar.apply(pd.to_datetime)

步骤2:筛选包含2022年2月日期的行

有两种常用实现方式:

方式一:通过日期的年、月属性判断
# 检查每行是否存在2022年2月的日期
mask = calendar.apply(lambda row: (row.dt.year == 2022) & (row.dt.month == 2)).any(axis=1)
# 应用筛选条件
result = calendar[mask]
方式二:通过日期范围判断
start_date = pd.to_datetime('2022-02-01')
end_date = pd.to_datetime('2022-02-28')
# 检查每行是否存在处于该范围内的日期
mask = calendar.apply(lambda row: row.between(start_date, end_date)).any(axis=1)
# 应用筛选条件
result = calendar[mask]

运行上述代码后,即可得到符合需求的筛选结果。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.08 12:01:05