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
相关产品推荐
相关产品推荐

