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

如何按Data列的日期条件筛选DataFrame行?

如何按Data列的日期条件筛选DataFrame行?

嘿,别放弃呀!你的问题其实只是个语法小失误导致的,很容易解决~

首先得纠正你之前的错误写法:df['Data' == '2023-07-11']这个逻辑搞反了——你应该先选中Data列,再对列内的每个值做等于判断,而不是把列名和日期直接做比较。

正确的筛选方法

结合你提供的示例代码,这里有两种简单好用的正确写法:

方法1:基础布尔索引

这是最直接的方式,先获取Data列,生成一个布尔数组(标记每行是否符合日期条件),再用这个数组去筛选行:

target_date = '2023-07-11'
filtered_df = orig_df_stats[orig_df_stats['Data'] == target_date]
print(filtered_df)

运行后会得到你想要的结果:

Data Val1 Val2 Val3 P Totals
0  2023-07-11    2   23    2 0     12

方法2:使用query()方法(更简洁)

如果你喜欢类SQL的直观语法,可以用query()函数,写法更清爽:

filtered_df = orig_df_stats.query("Data == '2023-07-11'")
print(filtered_df)

这个方法和上面的效果完全一致,只是表达形式不同。

额外建议:把日期列转成datetime类型

虽然现在用字符串匹配已经能生效,但如果之后你需要做日期相关的进阶操作(比如按月份筛选、计算日期差),建议把Data列转换成datetime类型,后续处理会更灵活:

orig_df_stats['Data'] = pd.to_datetime(orig_df_stats['Data'])

转成datetime后,筛选语法依旧适用,甚至可以直接用日期对象来匹配:

from datetime import date
target_date = date(2023,7,11)
filtered_df = orig_df_stats[orig_df_stats['Data'] == target_date]

为什么你之前的写法会出错?

你写的orig_df_stats['Data' == '2023-07-11'],其实是先计算'Data' == '2023-07-11',这个表达式的结果是False,然后你相当于在取orig_df_stats[False],这当然会报错或者得到空结果啦。

备注:内容来源于stack exchange,提问作者Booji Boy

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.04.22 08:38:08