使用.loc访问器的pandas datetime索引的布尔掩码

bro*_*red 3 python performance datetime pandas

Asumme以下玩具代码:

import numpy as np
import pandas as pd
rng = pd.date_range('1/1/2011', periods=72, freq='H')
avec = np.random.rand(len(rng))
bvec = np.random.rand(len(rng))
df = pd.DataFrame({"A":avec,"B":bvec}, index=rng)
Run Code Online (Sandbox Code Playgroud)

我现在可以选择时间间隔的一部分

df.loc["2011-01-02",:]
Run Code Online (Sandbox Code Playgroud)

有没有办法有效地访问与结果切片对应的布尔掩码,即:

array([False, False, False, False, False, False, False, False, False,
       False, False, False, False, False, False, False, False, False,
       False, False, False, False, False, False,  True,  True,  True,
        True,  True,  True,  True,  True,  True,  True,  True,  True,
        True,  True,  True,  True,  True,  True,  True,  True,  True,
        True,  True,  True, False, False, False, False, False, False,
       False, False, False, False, False, False, False, False, False,
       False, False, False, False, False, False, False, False, False], dtype=bool)
Run Code Online (Sandbox Code Playgroud)

我在早期的stackoverflow答案中尝试了这些建议,但df.index.date需要很长时间才能在我的数据集上运行...

jez*_*ael 6

如果性能是重要的链2布尔掩码:

(df.index >= "2011-01-02") & (df.index < "2011-01-03")
Run Code Online (Sandbox Code Playgroud)