【发布时间】:2020-11-19 12:48:54
【问题描述】:
我有一个 pandas multiIndex 数据框,我想按名称和编号排序。
创建一个类似的数据集,df作为示例:
random= np.random.rand(3,10)
a = [ 'a','b','a','b','a','b','a','b','a', 'b']
b = ['p11_1','p11_1','p1_1','p1_1','p9_1','p9_1','p10_1','p10_1','p1_2','p1_2']
arrays = [a,b]
df = pd.DataFrame(data = random, columns = arrays)
标题层如下所示:
a b a ... b a b
p11_1 p11_1 p1_1 ... p10_1 p1_2 p1_2
我可以使用简单的排序命令,但会导致输出错误:
df = df.sort_index(axis=1)
标题层如下所示:
a ... b
p10_1 p11_1 p1_1 ... p1_1 p1_2 p9_1
这对两个层都进行了排序,但第二层不是所需的输出。
所需的输出对第二层的排序如下:
p1_1 < p1_2 < p9_1 < p10_1 < p11_1
而不是:
p10_1 < p11_1 < p1_1 < p1_2 < p9_1
一切都会有帮助!
【问题讨论】:
-
请张贴您预期输出的视觉效果
标签: pandas string sorting numbers multi-index