【问题标题】:Pandas Multi-Index Select Range on First Index?Pandas 在第一个索引上选择多索引范围?
【发布时间】:2019-02-08 15:32:30
【问题描述】:

我有一个具有 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:,:], :]

感谢您的任何提示!

【问题讨论】:

    标签: python pandas


    【解决方案1】:

    已解决

    您可以对索引进行排序,然后将值作为数组取回并对其进行切片并将其放入 .loc 切片器中。下面是一个工作示例:

    def get_slice(slicer, df):
        vals = df.index.levels[0][-slicer:]
        return df.loc[pd.IndexSlice[vals,:], :].copy()
    

    这会将第一个索引按 n (从末尾开始)切片,返回数组中的具体值,然后您可以将其输入到 .loc 中,该 .loc 将获取一个值数组。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2021-08-25
      • 2014-01-01
      • 1970-01-01
      • 2018-10-07
      • 1970-01-01
      • 2021-05-24
      • 2017-08-27
      • 2015-03-24
      相关资源
      最近更新 更多