我有一個(gè)具有級(jí)別 0 和 1 的多級(jí)索引數(shù)據(jù)框。級(jí)別 0 是日期,而級(jí)別 1 是資產(chǎn) ID。我只是想根據(jù) 0 級(jí)索引選擇數(shù)據(jù)幀的一部分。例如:df[-10:] 將根據(jù)級(jí)別 0 檢索最后 10 個(gè)索引下的所有行。我嘗試了各種與此類似的事情:master_df.loc[(-3, ), :]通常,我最終會(huì)遇到某種形式的級(jí)別類型不匹配。0 級(jí)索引是日期時(shí)間,但我已經(jīng)對(duì)其進(jìn)行了排序并希望訪問(wèn)一個(gè)數(shù)字范圍。我的切片應(yīng)該包含最近 X 天的所有相關(guān)資產(chǎn)和數(shù)據(jù)。這是使用所有第二個(gè)索引和所有列獲取 10 個(gè)最新的嘗試失敗。它因“無(wú)法使用類 int 的這些索引器對(duì)類 DatetimeIndex 進(jìn)行切片索引”而失敗idx = pd.IndexSlice
master_df.loc[idx[-10:,:], :]感謝您提供任何提示!
1 回答

精慕HU
TA貢獻(xiàn)1845條經(jīng)驗(yàn) 獲得超8個(gè)贊
解決了
您可以對(duì)索引進(jìn)行排序,然后將值作為數(shù)組取回并將其切片并將其放入 .loc 切片器中。下面是一個(gè)工作示例:
def get_slice(slicer, df): vals = df.index.levels[0][-slicer:] return df.loc[pd.IndexSlice[vals,:], :].copy()
這會(huì)將第一個(gè)索引按 n(從末尾開始)進(jìn)行切片,返回?cái)?shù)組中的具體值,然后您可以將其輸入到 .loc 中,該值將采用一組值。
添加回答
舉報(bào)
0/150
提交
取消