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

是否有比for循环更快的方法在datetime序列中忽略日期提取指定时间数据

高效实现方案

你当前使用的for循环+append的方式在数据量较大时性能会非常差,pandas内置的向量化时间属性操作可以实现百倍以上的效率提升,推荐使用以下方法:

import pandas as pd

# 读取csv时直接将time列解析为datetime格式,减少后续转换开销
df = pd.read_csv("你的文件名.csv", parse_dates=["time"])

# 直接筛选17点0分0秒的行,无需拆分字符串或循环
target_df = df[
    (df["time"].dt.hour == 17) &
    (df["time"].dt.minute == 0) &
    (df["time"].dt.second == 0)
].reset_index(drop=True)

如果需要灵活适配任意目标时间点,可以使用字符串匹配的方式:

target_time = "17:00:00"
target_df = df[df["time"].dt.strftime("%H:%M:%S") == target_time].reset_index(drop=True)

补充说明

  • 该方法基于pandas底层C实现的向量化运算,十万行级数据的筛选耗时普遍在100ms以内,远快于Python级别的for循环
  • 如果需要补全缺失日期的对应时间点数据(缺失值设为NaN),可以使用时间序列重采样方法:
df = df.set_index("time").sort_index()
# 按天取17点的数值,缺失日期自动补NaN
target_df = df.asfreq("D", offset="17H").reset_index()

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.24 11:27:02