按 MultiIndex 的一级对 Pandas DataFrame 进行排序

Cia*_*lsh 3 python sorting multi-index dataframe pandas

我有一个 MultiIndexed pandas DataFrame 需要按其中一个索引器进行排序。这是数据的一个片段:

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  
Run Code Online (Sandbox Code Playgroud)

我希望对数据进行排序,以便时间索引按升序排列。我的第一个想法是使用,pandas.sort_values但似乎这不适用于索引。有人知道这样做的方法吗?谢谢

piR*_*red 5

使用sort_index指定level

df.sort_index(level=2)
Run Code Online (Sandbox Code Playgroud)

或者

df.sort_index(level=-1)
Run Code Online (Sandbox Code Playgroud)

或者

df.sort_index(level='time')
Run Code Online (Sandbox Code Playgroud)

所有产量:

在此处输入图片说明

  • 对于我的情况,我发现我需要添加 `sort_remaining=False` 来保留后续级别的顺序(在OP的情况下,想象一下在 `time` 之后有另一个索引列,您想要保留其顺序) (2认同)