Pandas изменение порядка столбцов с помощью MultiIndex - PullRequest
1 голос
/ 03 марта 2020

Мне нужно выполнить операции перестановки столбцов, которые включают в себя:

поиск различий относительно списка, создание новых сортировок столбцов в виде списка. Сохраните мультииндекс

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 Ответ

3 голосов
/ 03 марта 2020

Используйте 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
...