最简单的是使用stack http://pandas.pydata.org/pandas-docs/stable/generated/pandas.DataFrame.stack.html与新的DataFrame
包含新级别值的列:
df1 = pd.DataFrame(data=1,index=df.index, columns=new_level_labels).stack()
df1.index.names = ['Level0','Level1',new_level_name]
print (df1)
Level0 Level1 New level
foo a p 1
q 1
b p 1
q 1
qux a p 1
q 1
dtype: int64
print (df1.index)
MultiIndex(levels=[['foo', 'qux'], ['a', 'b'], ['p', 'q']],
labels=[[0, 0, 0, 0, 1, 1], [0, 0, 1, 1, 0, 0], [0, 1, 0, 1, 0, 1]],
names=['Level0', 'Level1', 'New level'])