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

如何通过Pandas .loc访问器从DatetimeIndex获取对应切片的布尔掩码

获取时间切片对应布尔掩码的高效方法

当然有高效的方法啦!给你整理几个实用又快速的方案:

  • 直接用索引做时间范围比较(最推荐)
    pandas的DatetimeIndex天生支持向量化的时间比较,这是效率最高的方式,完全贴合你的需求:

    mask = (df.index >= '2011-01-02') & (df.index < '2011-01-03')
    

    生成的mask就是你要的布尔数组,和df.loc["2011-01-02",:]的筛选范围完全一致,底层是向量化运算,速度拉满。

  • 用isin匹配目标时间点
    如果需要更灵活的时间范围,你可以先生成目标日期的所有小时级索引,再用isin生成掩码:

    target_hours = pd.date_range('2011-01-02', periods=24, freq='H')
    mask = df.index.isin(target_hours)
    

    这个方法逻辑很直观,但数据量特别大的时候,性能会比第一种稍弱一点,因为涉及集合匹配。

  • 归一化索引后匹配日期
    要是你只需要筛选某一天的所有数据,还可以把索引的时间部分归一化到0点,再和目标日期比较:

    mask = df.index.normalize() == pd.Timestamp('2011-01-02')
    

    这种方法代码简洁,效率也不错,适合只按日期筛选的场景。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.22 09:00:09