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

Python使用pandas按日期过滤DataFrame datetime列报错问题求解

报错原因梳理

  • 前两次尝试:pd.to_datetime(less_hot_df['date_time']).dt.date返回的是仅包含日期值的Series,而非DataFrame,第二次直接将该Series赋值给date_df后,date_df不存在date_time字段,触发KeyError。同时dt.date会将pandas内置的datetime64类型转为Python原生date对象,属于object类,无法使用pandas的时间范围切片功能。
  • 第三次尝试:你将时间列转成datetime类型的操作仅赋值给了date_df的字段,原less_hot_df的date_time列仍为字符串类型,和带时区的Timestamp对象做比较时触发类型不匹配报错。

正确操作步骤

  1. 先将原DataFrame的date_time列转换为带UTC时区的datetime类型,直接覆盖原列:
less_hot_df['date_time'] = pd.to_datetime(less_hot_df['date_time'], utc=True)
  1. 按需求选择筛选方式:

方式一:布尔索引筛选(无需修改索引)

start_date = pd.to_datetime('2014-03-01 06:00', utc=True)
end_date = pd.to_datetime('2014-05-30 18:00', utc=True)
result_df = less_hot_df[(less_hot_df['date_time'] > start_date) & (less_hot_df['date_time'] < end_date)]

方式二:时间索引切片(代码更简洁)

# 将date_time列设为索引
less_hot_df = less_hot_df.set_index('date_time')
# 直接按时间范围切片
result_df = less_hot_df['2014-03-01':'2014-05-30']

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.26 22:15:02