【问题标题】:Pandas rearrenging columns with MultiIndexPandas 使用 MultiIndex 重新排列列
【发布时间】:2020-06-15 16:04:22
【问题描述】:

我需要执行重新排列的列操作,包括:

查找列表的差异 创建新列排序为列表 保持多索引

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

【问题讨论】:

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


    【解决方案1】:

    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
    

    【讨论】:

      猜你喜欢
      • 2020-05-19
      • 1970-01-01
      • 2017-03-02
      • 2017-04-06
      • 2020-11-30
      • 2017-05-04
      • 1970-01-01
      • 2012-09-02
      • 2019-03-04
      相关资源
      最近更新 更多