我想使用 MultiIndex DataFrame 輕松選擇 DataFrame 的部分。我創建了一個空的 DataFrame 如下:mi = mindex = {'input':['a','b','c'],'optim':['pareto','alive']}mi = pd.MultiIndex.from_tuples([(c,k) for c in mi.keys() for k in mi[c]])mc = pd.MultiIndex(names=['Generation','Individual'],labels=[[],[]],levels=[[],[]])population = pd.DataFrame(index=mi,columns=mc)這似乎很好。但是,我不知道如何插入單個數據來開始填充我的 DataFrame。我嘗試了以下方法:population.loc[('optim','pareto'),(0,0)]=True我試圖定義一個新的列雙索引 (0,0) 導致NotImplementedError. 我也試過 (0,1),它給出了一個ValueError.我也試過沒有列索引:population.loc[('optim','pareto')]=True哪個沒有錯誤......但DataFrame也沒有變化......有幫助嗎?提前致謝。編輯 為了澄清我的問題,一旦填充,我的 DataFrame 應如下所示:Generation 1 2Individual 1 2 3 4 5 6input a 1 1 2 ... b 1 2 2 ... c 1 1 2 ...optim pareto True True False ... alive True True False ...編輯 2 我發現如果我在 DataFrame 創建時定義我的第一列,我正在做的工作。特別是:mc = pd.MultiIndex.from_tuples([(0,0)])我得到了第一列nan,我可以根據需要添加數據(也適用于新列):population.loc[('optim','pareto'),(0,1)]=True我仍然不知道我的第一個定義有什么問題......
1 回答

幕布斯6054654
TA貢獻1876條經驗 獲得超7個贊
即使我不知道為什么我的初始定義是錯誤的,以下內容也按預期工作:
mi = {'input':['a','b','c'],'optim':['pareto','alive']}
mi = pd.MultiIndex.from_tuples([(c,k) for c in mi.keys() for k in mi[c]])
mc = pd.MultiIndex.from_tuples([(0,0)],names=['Generation','Individual'])
population = pd.DataFrame(index=mi,columns=mc)
看起來解決方案是在創建 DataFrame 時初始化列(此處為 (0,0) 列)。然后創建的 DataFrame 是:
Generation 0
Individual 0
input a NaN
b NaN
c NaN
optim pareto NaN
alive NaN
然后可以填充將值添加到當前列或新列/行。
添加回答
舉報
0/150
提交
取消