如何在MultiIndex多层索引DataFrame中对时间序列范围进行切片筛选
问题解决方法
前置检查(必做,否则切片会报错或结果不符合预期)
- 确保第二层日期索引已经转换为
datetime类型,避免字符串格式导致的切片逻辑异常:
df.index = df.index.set_levels( [df.index.levels[0], pd.to_datetime(df.index.levels[1])], level=['Index Ticker', 'Date'] )
- 多层索引切片要求索引处于排序状态,先执行索引排序:
df = df.sort_index(level=['Index Ticker', 'Date'])
两种可行的筛选方案
方案1:使用IndexSlice(原有写法的修正版)
你的原有逻辑是正确的,语法报错大概率是括号配对或上下文使用问题,按下方写法即可正常运行:
import pandas as pd idx = pd.IndexSlice filtered_df = df.loc[idx[:, '2020-01-01':], :]
方案2:使用query方法(更简洁,无语法坑)
不需要记忆多层切片的规则,直接按索引名筛选即可:
filtered_df = df.query("Date >= '2020-01-01'")
内容的提问来源于stack exchange,提问作者Alfredo Di Massimo
相关产品推荐
相关产品推荐

