我有這樣的pandas MultiIndex對象:>>> import pandas as pd>>> arrays = [[1, 1, 2, 2], ['red', 'blue', 'red', 'blue']]>>> multi = pd.MultiIndex.from_arrays(arrays, names=('number', 'color'))>>> print(multi)MultiIndex(levels=[[1, 2], ['blue', 'red']], labels=[[0, 0, 1, 1], [1, 0, 1, 0]], names=['number', 'color'])我想從另一個來源附加第三個索引列。>>> idx = pd.Index(['a', 'a', 'a', 'b'], name='letter')最終結(jié)果應該是MultiIndex包含所有三列的 a :>>> pd.MagicFunctionICanNotFind(multi, idx)MultiIndex(levels=[[1, 2], ['blue', 'red'], ['a', 'b']], labels=[[0, 0, 1, 1], [1, 0, 1, 0], [0, 0, 0, 1]], names=['number', 'color', 'letter'])當我嘗試使用該MultiIndex.append()函數(shù)時,它將我的新索引值連接到我的索引對象的底部,而不是作為一個新級別。我還查看了這個想要做類似事情的問題,但是它正在使用數(shù)據(jù)框,并且出于超出此問題范圍的長期復雜原因,我正在使用索引對象。我一直在嘗試使用values兩個索引對象的基礎的一切都變得相當復雜,以至于它似乎不是最好的前進道路。這必須是 Pandas 代碼庫中相對頻繁發(fā)生的事情,有沒有優(yōu)雅的解決方案?
1 回答

神不在的星期二
TA貢獻1963條經(jīng)驗 獲得超6個贊
創(chuàng)建一個模擬 DataFrame 并使用set_index:
pd.DataFrame(index=multi).set_index(idx, append=True).index
MultiIndex(levels=[[1, 2], ['blue', 'red'], ['a', 'b']],
labels=[[0, 0, 1, 1], [1, 0, 1, 0], [0, 0, 0, 1]],
names=['number', 'color', 'letter'])
添加回答
舉報
0/150
提交
取消