按一级 MultiIndex 对 pandas DataFrame 进行排序
Posted
技术标签:
【中文标题】按一级 MultiIndex 对 pandas DataFrame 进行排序【英文标题】:Sorting a pandas DataFrame by one level of a MultiIndex 【发布时间】:2016-12-01 15:49:09 【问题描述】:我有一个 MultiIndexed pandas DataFrame,需要由其中一个索引器进行排序。这是数据的sn-p:
gene VIM
treatment dose time
TGFb 0.1 2 -0.158406
1 2 0.039158
10 2 -0.052608
0.1 24 0.157153
1 24 0.206030
10 24 0.132580
0.1 48 -0.144209
1 48 -0.093910
10 48 -0.166819
0.1 6 0.097548
1 6 0.026664
10 6 -0.008032
我希望对数据进行排序,以便时间索引按升序排列。我的第一个想法是使用pandas.sort_values
,但这似乎不适用于索引。有人知道这样做的方法吗?谢谢
【问题讨论】:
【参考方案1】:使用sort_index
指定level
:
df.sort_index(level=2)
或者
df.sort_index(level=-1)
或者
df.sort_index(level='time')
所有产量:
【讨论】:
对于我的情况,我发现我需要添加sort_remaining=False
以保留后续级别的顺序(在 OP 的情况下,想象在您想要保留其顺序的 time
之后有另一个索引列) 以上是关于按一级 MultiIndex 对 pandas DataFrame 进行排序的主要内容,如果未能解决你的问题,请参考以下文章
在 pandas MultiIndex DataFrame 中按级别求和列
为啥在具有一级索引的 MultiIndex 列的 pandas DataFrame 中表现不同?
pandas 与 MultiIndex 合并,当只有一级索引用作键时