我有一个具有0级和1级的多级索引数据,0级是日期,级别1是资产ids。
我只是尝试根据0级索引来选择数据帧的一个片段。例如:
df-10:将根据0级检索最后10个索引下的所有行。
我尝试过许多类似于此的东西:
master_df.loc[(-3, ), :] 通常情况下,对于该级别,我会以某种形式的类型不匹配结束。0级索引是一个日期时间,但我已经对其进行了排序,并希望访问一个数字范围。我的切片应该包含最近的X天,其中包含所有相关的资产和数据。
下面是另一次失败的尝试,试图获得所有第二个索引和所有列最近的10个索引。它失败的原因是“无法用这些int类的索引器在类DatetimeIndex上执行切片索引”
idx = pd.IndexSlice
master_df.loc[idx[-10:,:], :]谢谢你的建议!
发布于 2018-09-03 15:49:20
解决了
您可以对索引进行排序,然后以数组的形式返回值并将其切片,并将其放入.loc切片器中。下面是一个有用的例子:
def get_slice(slicer, df):
vals = df.index.levels[0][-slicer:]
return df.loc[pd.IndexSlice[vals,:], :].copy()这将第一个索引分割为n(从末尾开始),返回数组中的具体值,然后将其输入到.loc中,后者将接受一个值数组。
https://stackoverflow.com/questions/52152067
复制相似问题