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

如何使用Pandas提取指定日期时间格式范围内的数据

你的代码存在两个核心问题导致拿不到预期数据:

  • 语法错误:构造DataFrame的嵌套列表中,第三个元素后缺失逗号,同时调用head方法时遗漏了括号。
  • 逻辑错误:loc切片默认针对DataFrame的行索引生效,你没有把时间列设置为行索引,默认行索引是0、1、2、3的整数序列,用时间字符串作为切片范围自然匹配不到任何数据。

修正后的可运行代码如下:

import pandas as pd
import numpy as np

df = pd.DataFrame([
    ['2018-01-01 16:00:00+00:00', 2], 
    ['2018-01-01 17:00:00+00:00', 3], 
    ['2018-01-01 18:00:00+00:00', 6],
    ['2018-01-01 19:00:00+00:00', 9]
], columns=['time', 'data'])

print(df.head())

df['time'] = pd.to_datetime(df['time']) 
# 将时间列设置为行索引,后续才能用loc做时间切片
df = df.set_index('time')

df2018 = df.loc['2018-01-01 16:30:00':'2018-01-01 18:00:00']
print(df2018.head())

运行后会输出两条符合时间范围的记录:17:00和18:00的对应数据。

如果你不想修改原有索引,也可以用布尔索引实现相同效果,不需要修改索引:

df['time'] = pd.to_datetime(df['time']) 
df2018 = df[(df['time'] >= '2018-01-01 16:30:00') & (df['time'] <= '2018-01-01 18:00:00')]

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.24 21:15:09