猿问

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

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

感谢您提供任何提示!


不负相思意
浏览 202回答 1
1回答

精慕HU

解决了您可以对索引进行排序,然后将值作为数组取回并将其切片并将其放入 .loc 切片器中。下面是一个工作示例:def get_slice(slicer, df):     vals = df.index.levels[0][-slicer:]         return df.loc[pd.IndexSlice[vals,:], :].copy()这会将第一个索引按 n(从末尾开始)进行切片,返回数组中的具体值,然后您可以将其输入到 .loc 中,该值将采用一组值。
随时随地看视频慕课网APP

相关分类

Python
我要回答