我创建了如下数据框。
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,但无法使其适用于我的情况。
答案 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