簡體   English   中英

熊貓:如何將數據添加到MultiIndex空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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM