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

Pandas中筛选Date列返回空DataFrame问题求助

问题解决:Pandas筛选日期列返回空DataFrame的原因及修复方法

核心原因

你通过df['Date'] = df.parsed_date_column.dt.date生成的Date列,虽然显示格式是2020-05-11,但实际存储的是Python原生的datetime.date对象,而非字符串。直接和字符串'2021-06-26'比较时,类型不匹配,自然筛选不到数据。

修复方案

以下几种方法都可以解决问题,选适合你的即可:

方法1:直接基于原解析日期列筛选(推荐,无需额外生成Date列)

利用dt.date直接和Pythondate对象比较:

from datetime import date
target_date = date(2021, 6, 26)
filtered_df = df[df.parsed_date_column.dt.date == target_date]

或者用dt.floor('D')将原日期列转成日期起始时间(如2021-06-26 00:00:00),再和字符串格式的日期比较:

filtered_df = df[df.parsed_date_column.dt.floor('D') == '2021-06-26']

方法2:将生成的Date列转为字符串后筛选

如果一定要保留Date列,先把它转成字符串类型:

df['Date'] = df.parsed_date_column.dt.strftime('%Y-%m-%d')
# 现在可以直接用字符串筛选
filtered_df = df[df['Date'] == '2021-06-26']

方法3:将Date列转为Pandas datetime类型

转成datetime64类型后,即使显示是日期格式,也能正确匹配:

df['Date'] = pd.to_datetime(df.parsed_date_column.dt.date)
filtered_df = df[df['Date'] == '2021-06-26']

方法4:筛选时用date对象匹配现有Date列

不修改Date列的情况下,直接用Pythondate对象比较:

from datetime import date
target_date = date(2021, 6, 26)
filtered_df = df[df['Date'] == target_date]

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.15 22:56:29