为了账号安全,请及时绑定邮箱和手机立即绑定

Pandas 多索引选择第一个索引的范围?

Pandas 多索引选择第一个索引的范围?

不负相思意 2021-06-07 10:46:41
我有一个具有级别 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 中,该值将采用一组值。


查看完整回答
反对 回复 2021-06-09
  • 1 回答
  • 0 关注
  • 201 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信