我创建了一个数据框,如下所示。
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/