在多索引中分割日期时间的最有效方法是什么?

What is the most performant way to slice a datetime in a multi-index?

如果 DataFrame 具有包含日期​​时间索引的多索引,那么按时间过滤 DataFrame 的最'performant' 方法是什么?

例如,如何仅在多索引中包含的日期时间索引中过滤营业时间。

how to filter for business hours only in a datetime index which is contained in a multi-index.

df.index.get_level_values(1).hour.isin([9,10,11,13,14,15,16])

这只是一个例子——过滤 MultiIndex 的第二层,它是一个日期时间列,并得到一个布尔掩码,只要时间是 9 点到 5 点(午休时间除外),该掩码为 True。

需要更高的精度?

dt = df.index.get_level_values(1)
minutes = dt.hour * 60 + dt.minute
minutes.between(8*60+15, 17*60+45)

那是 8:15 到 17:45。

午睡?

minutes.between(9*60+30, 15*60) | minutes.between(17*60+30, 20*60)