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

如何在DataFrame中筛选两个datetime时间戳之间的数据?

解决DataFrame时间戳范围筛选问题

报错原因说明

  1. invalid syntax语法错误:直接写2023-5-29 00:15:01.000138338会被Python当作减法运算,语法不合法,必须把时间字符串用引号包裹。
  2. TypeError: Index must be DatetimeIndex:between_time方法要求DataFrame的索引是DatetimeIndex类型,而你的时间数据存储在普通列receive_timestamp中,不是索引,因此触发该错误。

解决方案

步骤1:确保时间列是datetime类型

如果receive_timestamp还未转换为datetime类型,先执行转换:

import pandas as pd

# 转换列类型为datetime
df['receive_timestamp'] = pd.to_datetime(df['receive_timestamp'])

方法一:直接用布尔索引筛选(推荐,无需修改索引)

# 定义时间范围
start = pd.to_datetime('2023-05-29 00:15:01.000138338')
end = pd.to_datetime('2023-05-29 00:15:01.138503551')

# 筛选时间范围内的行
filtered_df = df[(df['receive_timestamp'] >= start) & (df['receive_timestamp'] <= end)]

方法二:将时间列设为索引后使用between_time

# 将时间列设置为索引
df_indexed = df.set_index('receive_timestamp')

# 使用between_time筛选
filtered_df = df_indexed.between_time('00:15:01.000138338', '00:15:01.138503551')

# 可选:恢复原索引
filtered_df = filtered_df.reset_index()

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.20 00:32:06