我有一个具有级别 0 和 1 的多级索引数据框。级别 0 是日期,而级别 1 是资产 ID。我只是想根据 0 级索引选择数据帧的一部分。例如:df[-10:] 将根据级别 0 检索最后 10 个索引下的所有行。我尝试了各种与此类似的事情:master_df.loc[(-3, ), :]通常,我最终会遇到某种形式的级别类型不匹配。0 级索引是日期时间,但我已经对其进行了排序并希望访问一个数字范围。我的切片应该包含最近 X 天的所有相关资产和数据。这是使用所有第二个索引和所有列获取 10 个最新的尝试失败。它因“无法使用类 int 的这些索引器对类 DatetimeIndex 进行切片索引”而失败idx = pd.IndexSlice
master_df.loc[idx[-10:,:], :]感谢您提供任何提示!
1 回答
精慕HU
TA贡献1845条经验 获得超8个赞
解决了
您可以对索引进行排序,然后将值作为数组取回并将其切片并将其放入 .loc 切片器中。下面是一个工作示例:
def get_slice(slicer, df): vals = df.index.levels[0][-slicer:] return df.loc[pd.IndexSlice[vals,:], :].copy()
这会将第一个索引按 n(从末尾开始)进行切片,返回数组中的具体值,然后您可以将其输入到 .loc 中,该值将采用一组值。
添加回答
举报
0/150
提交
取消