![](/img/trans.png)
[英]How to add a MultiIndex after loading csv data into a pandas dataframe?
[英]Pandas: how to add data to a MultiIndex empty DataFrame?
我想使用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
在這里,我試圖定義一個導致NotImplementedError
的新列雙索引(0,0)。 我也嘗試了(0,1),它給出了ValueError
。
我也嘗試了沒有列索引:
population.loc[('optim','pareto')]=True
哪個都沒有錯誤...但是在DataFrame中也沒有任何更改...有什么幫助嗎? 提前致謝。
編輯為了澄清我的問題,一旦填充,我的DataFrame應該看起來像這樣:
Generation 1 2
Individual 1 2 3 4 5 6
input 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
我仍然不知道我的第一個定義有什么問題...
即使我不知道為什么我的初始定義錯誤,也可以按預期進行以下操作:
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
然后可以填充該值,將值添加到當前列或新列/行。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.