熊猫增加了列级别,从而增加了列总数

时间:2019-12-03 09:08:42

标签: python pandas multi-index

我创建了如下数据框。

myidx=['idx1','idx2','idx3']
mycols=['a','b','c','d']
df=pd.DataFrame(index=myidx,columns=mycols)
        a    b    c    d
idx1  NaN  NaN  NaN  NaN
idx2  NaN  NaN  NaN  NaN
idx3  NaN  NaN  NaN  NaN

然后,我想添加一个具有n重复值的新列级别。让我们说:

mycolsnewlvl=['foo','bar','baz']

预期输出为:

             a              b              c              d   
       foo  bar  baz  foo  bar  baz  foo  bar  baz  foo  bar  baz
idx1   NaN  NaN  NaN  NaN  NaN  NaN  NaN  NaN  NaN  NaN  NaN  NaN
idx2   NaN  NaN  NaN  NaN  NaN  NaN  NaN  NaN  NaN  NaN  NaN  NaN
idx3   NaN  NaN  NaN  NaN  NaN  NaN  NaN  NaN  NaN  NaN  NaN  NaN

我尝试遵循this

df.columns = pd.MultiIndex.from_product([df.columns, ['foo','bar','baz']])

但是它返回:

  

ValueError:长度不匹配:预期轴有8个元素,新值有24个元素

我也查看了this,但无法使其适用于我的情况。

1 个答案:

答案 0 :(得分:2)

DataFrame.reindex用于MultiIndex值的重复列:

mux = pd.MultiIndex.from_product([df.columns, ['foo','bar','baz']])

df = df.reindex(mux, axis=1)
print (df)
       a           b           c           d        
     foo bar baz foo bar baz foo bar baz foo bar baz
idx1 NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN
idx2 NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN
idx3 NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN