我有一个像这样的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