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

如何仅传入日期字符串从Pandas DataFrame提取单日数据?

当然有办法!不用写繁琐的时间范围,只传日期字符串就能轻松筛选当天数据,我给你几种实用的方案:

1. 提取日期部分直接匹配

首先确保你的date1列是datetime类型(如果还没转的话先执行这一步):

import pandas as pd
df['date1'] = pd.to_datetime(df['date1'])

然后就可以通过dt.date提取日期部分,和目标日期对比:

target_date = "2000-01-01"
# 把目标字符串转成date对象再匹配
result = df[df['date1'].dt.date == pd.to_datetime(target_date).date()]

2. 标准化时间到当日零点

用dt.normalize()把date1的时间部分统一转为00:00:00,再和目标日期的datetime对象比较:

result = df[df['date1'].dt.normalize() == pd.to_datetime(target_date)]

这个方法逻辑更清晰,而且返回的结果保留了原时间的精度。

3. 使用query()简化代码

如果你喜欢更简洁的语法,query()方法能让筛选表达式更直观:

result = df.query("date1.dt.date == @pd.to_datetime('2000-01-01').date()")

@符号用来引用外部变量,如果你把目标日期存在变量里,改成@target_date就行。

4. 利用日期范围(适合大数据量)

如果你的数据集很大,用between()方法配合日期范围会更高效:

start = pd.to_datetime(target_date)
end = start + pd.Timedelta(days=1)
# 包含start,不包含end,正好覆盖当天所有时间
result = df[df['date1'].between(start, end, inclusive='left')]

如果把date1设为索引,还能直接用切片,超级方便:

df = df.set_index('date1')
# 直接写日期就会自动匹配当天所有时间段
result = df['2000-01-01']

这些方法都能帮你只用日期字符串完成筛选,不用再手动写时间边界啦!

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.28 06:12:46