背景
我有一个具有两级列但只有一级行的大型数据框,并尝试按以下方式对其进行排序: 级别0:按字母顺序; 级别1:自定义排序。
示例
import pandas as pd
dictionary = {'A' : {'M': [1,2,3,4,5],
'L': [6,7,8,9,1],
'F': [3,5,1,3,5] },
'C' : {'M': [2,3,4,5,6],
'L': [7,8,9,1,2],
'F': [0,1,6,3,5] },
'B' : {'M': [1,5,2,5,3],
'L': [9,5,6,3,4],
'F': [6,2,7,1,5] }
}
reform = {(outerKey, innerKey): values for outerKey, innerDict in dictionary.iteritems() for innerKey, values in innerDict.iteritems()}
pd.DataFrame(reform,index=['g','h','i','j','k'])
我现在手头有的是:
# A B C
# F L M F L M F L M
# g 3 6 1 6 9 1 0 7 2
# h 5 7 2 2 5 5 1 8 3
# i 1 8 3 7 6 2 6 9 4
# j 3 9 4 1 3 5 3 1 5
# k 5 1 5 5 4 3 5 2 6
问题
我该如何指定级别0的列顺序为A、B、C,级别1的列顺序为F、M、L?
### OUT
# A B C
# F M L F M L F M L
我曾试用pd.IndexSlice
和.loc
,但仍只得到按字母顺序排列的结果。
df.reindex(columns=list("FML"), level=1)
应该就足够了。不过无论如何,回答得很好。 - Nickil Maveli.columns.set_levels
问题,但我再次查看了一下。 - EdChum