首页 > 解决方案 > pandas中不同长度元组的排序索引

问题描述

>>> df = pd.DataFrame(index=[('B',),('A',),('B','C',),('A','B',),('A','B','C')],data=[1,2,3,4,5],columns=['count'])

>>> df
          count
(B,)        1
(A,)        2
(B, C)      3
(A, B)      4
(A, B, C)   5

我想按元组索引排序,以便对 1 个长度的元组进行排序,然后对 2 个长度进行排序,等等。预期的输出是这样的:

          count
(A,)        2
(B,)        1
(A, B)      4
(B, C)      3
(A, B, C)   5

我已经尝试过 sort_index,但它只根据第一个成员进行排序,而忽略了长度:

>>> df.sort_index()
count
(A,)        2
(A, B)      4
(A, B, C)   5
(B,)        1
(B, C)      3

标签: pythonpandaspandas-groupby

解决方案


您还可以reindex

print (df.reindex(sorted(df.index,key=lambda d: (len(d), d))))

           count
(A,)           2
(B,)           1
(A, B)         4
(B, C)         3
(A, B, C)      5

推荐阅读