背景:
我有一个带有MultiIndex的Panda数据帧。
我想让列级别没有排序。
df.column.levels将它们交给我,但已排序。
示例:
worms=['worm1', 'worm2', 'worm3']
bodyparts=['head', 'vulva', 'tail']
coords=['x', 'y']
arrays=pd.MultiIndex.from_product([worms, bodyparts, coords],
names=['worms', 'bodyparts', 'coords'])
idx = pd.Index(np.arange(0,5000),name='frames')
df=pd.DataFrame(index=idx, columns=arrays)
看起来像这样:
worms worm1 worm2 worm3
bodyparts head vulva tail head vulva tail head vulva tail
coords x y x y x y x y x y x y x y x y x y
frames
0 NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN
1 NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN
现在,如果我这样做:
df.columns.levels[1]
我得到:
Index(['head', 'tail', 'vulva'], dtype='object', name='bodyparts')
我想要什么:
Index(['head', 'vulva', 'tail'], dtype='object', name='bodyparts')
有什么选择吗?
这会按照出现的顺序提供它们:
pd.unique(df.columns.to_frame()['bodyparts'])
输出:['head' 'vulva' 'tail']