在多索引中分割日期时间的最有效方法是什么?
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)
如果 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)