我需要重新整理列操作,包括:
找到与列表有关的差异 创建新列排序为列表 保持多索引
import pandas as pd
cols = ['c1','c2','c3','c4']
df=pd.DataFrame(data=[[1,1,2,2,3,3],[4,4,5,5,6,6],[7,7,8,8,9,9]],index=['r1','r2','r3'],columns=pd.MultiIndex.from_tuples([('c2','mean'),('c2','max'),('c1','mean'),('c1','max'),('c3','mean'),('c3','max')]))
df
Out[52]:
c2 c1 c3
mean max mean max mean max
r1 1 1 2 2 3 3
r2 4 4 5 5 6 6
r3 7 7 8 8 9 9
所以,最终结果是:
df
Out[52]:
c1 c2 c3 c4
mean max mean max mean max mean max
r1 2 2 1 1 3 3 NaN NaN
r2 5 5 4 4 6 6 NaN NaN
r3 8 8 7 7 9 9 NaN NaN
答案 0 :(得分:3)
使用DataFrame.reindex
更改订单,并使用新的MultiIndex
将丢失的组合添加到原始数据中,例如由MultiIndex.from_product
创建:
mux = pd.MultiIndex.from_product([['c1','c2','c3','c4'], ['mean','max']])
df = df.reindex(mux, axis=1)
print (df)
c1 c2 c3 c4
mean max mean max mean max mean max
r1 2 2 1 1 3 3 NaN NaN
r2 5 5 4 4 6 6 NaN NaN
r3 8 8 7 7 9 9 NaN NaN