熊猫使用MultiIndex重新整理列

时间:2020-03-03 09:52:08

标签: python-3.x pandas multi-index

我需要重新整理列操作,包括:

找到与列表有关的差异 创建新列排序为列表 保持多索引

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

1 个答案:

答案 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
相关问题