根据其他表对multiIndex表进行排序



我有一个像这样的multiIndex数据框架

probe_names         PLAGL1  GRB10  MEST   H19  KCNQ1OT1  MEG3  MEG8  SNRPN  
Patient_1        0    0.55   0.53  0.53  0.47      0.62  0.11  0.83   0.50   
1    0.51   0.46  0.53  0.52      0.47  0.00  0.91   0.47   
2     NaN    NaN   NaN  0.55       NaN   NaN   NaN    NaN   
3     NaN    NaN   NaN   NaN       NaN   NaN   NaN    NaN   
4     NaN    NaN   NaN   NaN       NaN   NaN   NaN    NaN   
0    0.54   0.59  0.53  0.47      0.66  0.13  0.90   0.51   
1    0.48   0.45  0.54  0.50      0.47  0.00  0.90   0.50   
2     NaN    NaN   NaN  0.54       NaN   NaN   NaN    NaN   
3     NaN    NaN   NaN   NaN       NaN   NaN   NaN    NaN   
4     NaN    NaN   NaN   NaN       NaN   NaN   NaN    NaN   
Patient_3        0    0.54   0.50  0.58  0.52      0.31  0.62  0.53   0.56   
1    0.57   0.49  0.53  0.57      0.09  0.53  0.52   0.50   
2     NaN    NaN   NaN  0.57       NaN   NaN   NaN    NaN   
3     NaN    NaN   NaN   NaN       NaN   NaN   NaN    NaN   
4     NaN    NaN   NaN   NaN       NaN   NaN   NaN    NaN   
0    0.49   0.49  0.53  0.48      0.27  0.58  0.53   0.53   
1    0.51   0.45  0.50  0.52      0.09  0.51  0.50   0.49   
2     NaN    NaN   NaN  0.51       NaN   NaN   NaN    NaN   
3     NaN    NaN   NaN   NaN       NaN   NaN   NaN    NaN   
4     NaN    NaN   NaN   NaN       NaN   NaN   NaN    NaN   
Patient_2        0    0.54   0.55  0.55  0.57      0.53  0.58  0.55   0.52   
1    0.53   0.49  0.53  0.65      0.38  0.62  0.48   0.49   
2     NaN    NaN   NaN  0.66       NaN   NaN   NaN    NaN   
3     NaN    NaN   NaN   NaN       NaN   NaN   NaN    NaN   
4     NaN    NaN   NaN   NaN       NaN   NaN   NaN    NaN   
0    0.51   0.53  0.55  0.62      0.52  0.57  0.53   0.50   
1    0.48   0.45  0.52  0.63      0.38  0.59  0.46   0.53   
2     NaN    NaN   NaN  0.63       NaN   NaN   NaN    NaN   
3     NaN    NaN   NaN   NaN       NaN   NaN   NaN    NaN   
4     NaN    NaN   NaN   NaN       NaN   NaN   NaN    NaN  

和我有另一个类似的表,其索引是Patient_1, Patient_2和Patient_3。我想要那样的桌位。病人实际上是名字,病人的数量可以根据输入的数据而改变。在我要重新排序的表中,每个患者有10行,在患者顺序正确的表中,每个患者有6行。

我该怎么做?在非多索引表中,我通常将索引转换为列表,然后使用该列表对表进行排序。但是在这里我不知道怎么做。

编辑:我也有这个列表

['Patient_1', 'Patient_2', 'Patient_3']

我可以用这个,不是吗?

iuc,您可以简单地使用loc

下面是一个假的例子:

df = pd.DataFrame(np.arange(3**3).reshape(9,3),
columns=list('123'),
index=pd.MultiIndex.from_product((list('ACB'), range(3))))
1   2   3
A 0   0   1   2
1   3   4   5
2   6   7   8
C 0   9  10  11
1  12  13  14
2  15  16  17
B 0  18  19  20
1  21  22  23
2  24  25  26

重新排序:

l = ['A', 'B', 'C']
df.loc[l]
1   2   3
A 0   0   1   2
1   3   4   5
2   6   7   8
B 0  18  19  20
1  21  22  23
2  24  25  26
C 0   9  10  11
1  12  13  14
2  15  16  17

最新更新