使用multiIndex获取pandas数据帧中未排序的列级别



背景:

我有一个带有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']

最新更新