Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/359.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
根据在Python中组合列所形成的数量对行重新排序_Python_Pandas_Sorting_Dataframe - Fatal编程技术网

根据在Python中组合列所形成的数量对行重新排序

根据在Python中组合列所形成的数量对行重新排序,python,pandas,sorting,dataframe,Python,Pandas,Sorting,Dataframe,我有一个由熊猫组成的数据框架,如下所示: a b c d e f g h i j k l m n o 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 2 0 0 0 0 0 0 1 0 1 0 1 0 0 1 0 3 0 1 0 0 1 0 1 0 1 0 1 0 0 1 0 4 0 0 0 0 0

我有一个由熊猫组成的数据框架,如下所示:

        a  b  c  d  e  f  g  h  i  j  k  l  m  n  o
    1   0  0  0  0  0  0  0  0  0  0  0  0  0  0  0
    2   0  0  0  0  0  0  1  0  1  0  1  0  0  1  0
    3   0  1  0  0  1  0  1  0  1  0  1  0  0  1  0
    4   0  0  0  0  0  1  0  1  0  0  1  0  0  1  0
    5   0  0  1  1  0  1  0  1  0  0  1  0  0  1  0
    6   1  0  0  1  0  1  0  1  0  0  1  0  0  1  0
    7   0  0  0  0  0  0  0  0  0  0  0  0  0  1  0
    8   0  0  0  0  0  0  0  0  1  0  1  0  0  1  0
    9   0  0  0  0  0  0  0  0  0  0  0  1  1  1  0
    10  0  0  0  1  0  1  0  1  0  0  1  0  0  1  0
    11  0  0  0  0  0  0  0  1  0  0  1  0  0  1  0
    12  0  0  0  0  1  0  1  0  1  0  1  0  0  1  0
    13  0  0  0  0  0  0  0  0  0  0  1  0  0  1  0
    14  0  0  0  0  0  0  0  0  0  0  0  0  0  0  1
    15  0  0  0  0  1  0  1  0  1  0  1  0  0  1  0
    16  0  0  0  0  0  0  0  0  0  0  0  1  0  1  0
我想对行进行排序,以便它们按降序排列。行的值是通过组合列形成的数字。例如,第1行是000000000000000,第2行是000000101010010。最终结果应将第6行作为第一行,第1行作为最后一行。我试过了

    dat.sort_values(by=['a'], ascending=False, axis=0)

但这只是按第一列排序。是否有其他方法可以对行重新排序?

按所有列的当前顺序排序:

df.sort_values(by=df.columns.tolist(), ascending=False)

#    a  b  c  d  e  f  g  h  i  j  k  l  m  n  o
#6   1  0  0  1  0  1  0  1  0  0  1  0  0  1  0
#3   0  1  0  0  1  0  1  0  1  0  1  0  0  1  0
#5   0  0  1  1  0  1  0  1  0  0  1  0  0  1  0
#10  0  0  0  1  0  1  0  1  0  0  1  0  0  1  0
#12  0  0  0  0  1  0  1  0  1  0  1  0  0  1  0
#15  0  0  0  0  1  0  1  0  1  0  1  0  0  1  0
#4   0  0  0  0  0  1  0  1  0  0  1  0  0  1  0
#2   0  0  0  0  0  0  1  0  1  0  1  0  0  1  0
#11  0  0  0  0  0  0  0  1  0  0  1  0  0  1  0
#8   0  0  0  0  0  0  0  0  1  0  1  0  0  1  0
#13  0  0  0  0  0  0  0  0  0  0  1  0  0  1  0
#9   0  0  0  0  0  0  0  0  0  0  0  1  1  1  0
#16  0  0  0  0  0  0  0  0  0  0  0  1  0  1  0
#7   0  0  0  0  0  0  0  0  0  0  0  0  0  1  0
#14  0  0  0  0  0  0  0  0  0  0  0  0  0  0  1
#1   0  0  0  0  0  0  0  0  0  0  0  0  0  0  0

按所有列的当前顺序排序:

df.sort_values(by=df.columns.tolist(), ascending=False)

#    a  b  c  d  e  f  g  h  i  j  k  l  m  n  o
#6   1  0  0  1  0  1  0  1  0  0  1  0  0  1  0
#3   0  1  0  0  1  0  1  0  1  0  1  0  0  1  0
#5   0  0  1  1  0  1  0  1  0  0  1  0  0  1  0
#10  0  0  0  1  0  1  0  1  0  0  1  0  0  1  0
#12  0  0  0  0  1  0  1  0  1  0  1  0  0  1  0
#15  0  0  0  0  1  0  1  0  1  0  1  0  0  1  0
#4   0  0  0  0  0  1  0  1  0  0  1  0  0  1  0
#2   0  0  0  0  0  0  1  0  1  0  1  0  0  1  0
#11  0  0  0  0  0  0  0  1  0  0  1  0  0  1  0
#8   0  0  0  0  0  0  0  0  1  0  1  0  0  1  0
#13  0  0  0  0  0  0  0  0  0  0  1  0  0  1  0
#9   0  0  0  0  0  0  0  0  0  0  0  1  1  1  0
#16  0  0  0  0  0  0  0  0  0  0  0  1  0  1  0
#7   0  0  0  0  0  0  0  0  0  0  0  0  0  1  0
#14  0  0  0  0  0  0  0  0  0  0  0  0  0  0  1
#1   0  0  0  0  0  0  0  0  0  0  0  0  0  0  0
使用键进行排序

df.loc[df.astype(str).sum(1).sort_values(ascending=False).index]
Out[871]: 
    a  b  c  d  e  f  g  h  i  j  k  l  m  n  o
6   1  0  0  1  0  1  0  1  0  0  1  0  0  1  0
3   0  1  0  0  1  0  1  0  1  0  1  0  0  1  0
5   0  0  1  1  0  1  0  1  0  0  1  0  0  1  0
10  0  0  0  1  0  1  0  1  0  0  1  0  0  1  0
15  0  0  0  0  1  0  1  0  1  0  1  0  0  1  0
12  0  0  0  0  1  0  1  0  1  0  1  0  0  1  0
4   0  0  0  0  0  1  0  1  0  0  1  0  0  1  0
2   0  0  0  0  0  0  1  0  1  0  1  0  0  1  0
11  0  0  0  0  0  0  0  1  0  0  1  0  0  1  0
8   0  0  0  0  0  0  0  0  1  0  1  0  0  1  0
13  0  0  0  0  0  0  0  0  0  0  1  0  0  1  0
9   0  0  0  0  0  0  0  0  0  0  0  1  1  1  0
16  0  0  0  0  0  0  0  0  0  0  0  1  0  1  0
7   0  0  0  0  0  0  0  0  0  0  0  0  0  1  0
14  0  0  0  0  0  0  0  0  0  0  0  0  0  0  1
1   0  0  0  0  0  0  0  0  0  0  0  0  0  0  0
使用键进行排序

df.loc[df.astype(str).sum(1).sort_values(ascending=False).index]
Out[871]: 
    a  b  c  d  e  f  g  h  i  j  k  l  m  n  o
6   1  0  0  1  0  1  0  1  0  0  1  0  0  1  0
3   0  1  0  0  1  0  1  0  1  0  1  0  0  1  0
5   0  0  1  1  0  1  0  1  0  0  1  0  0  1  0
10  0  0  0  1  0  1  0  1  0  0  1  0  0  1  0
15  0  0  0  0  1  0  1  0  1  0  1  0  0  1  0
12  0  0  0  0  1  0  1  0  1  0  1  0  0  1  0
4   0  0  0  0  0  1  0  1  0  0  1  0  0  1  0
2   0  0  0  0  0  0  1  0  1  0  1  0  0  1  0
11  0  0  0  0  0  0  0  1  0  0  1  0  0  1  0
8   0  0  0  0  0  0  0  0  1  0  1  0  0  1  0
13  0  0  0  0  0  0  0  0  0  0  1  0  0  1  0
9   0  0  0  0  0  0  0  0  0  0  0  1  1  1  0
16  0  0  0  0  0  0  0  0  0  0  0  1  0  1  0
7   0  0  0  0  0  0  0  0  0  0  0  0  0  1  0
14  0  0  0  0  0  0  0  0  0  0  0  0  0  0  1
1   0  0  0  0  0  0  0  0  0  0  0  0  0  0  0

索引排序
,轴=1应该可以
df.sort_值(by=df.index.tolist(),axis=1,升序=False)
。如果我想对列而不是行进行排序,我将如何更改代码?换句话说,我想根据它们的数值(由列中的数字组成的数字)对列进行从大到大的排序。我懂了。感谢按
索引排序
,轴=1应该可以
df.sort_值(by=df.index.tolist(),axis=1,升序=False)
。如果我想对列而不是行进行排序,我将如何更改代码?换句话说,我想根据它们的数值(由列中的数字组成的数字)对列进行从大到大的排序。我懂了。感谢