python - Pandas 添加列级别,这会增加总列数

标签 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: Length mismatch: Expected axis has 8 elements, new values have 24 elements

我还查看了this但无法让它适用于我的情况。

最佳答案

使用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

关于python - Pandas 添加列级别,这会增加总列数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/59153550/

相关文章:

Python:在捕获并解决异常后再次运行 "try"

javascript - while 循环 python zip sum

python - Pandas - dataframe groupby - 如何获取多列的总和

python - 相对于任意级别的 Pandas Reindexing MultiIndex

Python C 绑定(bind) - 将数组从 python 获取到 C++

python - 在 matplotlib 中绘制圆形轮廓线

python - 更改数据框列中空格后的最后一个单词

python-3.x - PandaSQL 很慢

c++ - boost multi_index_container composite_key_compare

pandas - 如何在 Pandas 中聚合子数据帧?