2017-01-06 10 views
4

私は2000行と500列のデータフレームを持っています。すべての列を昇順で並べ替える必要があります。列には名前がなく、番号は0-500です。データフレームのすべての列を並べ替える

ランダムデータ:予想通り df.sort_values(by=0,axis=0)を使用して df = pandas.DataFrame(np.random.randint(0,100,size=(2000, 500)), columns=range(500))

は、0番目の列を並べ替えます。しかしdf.sort_values(by=1,axis=0)を使用すると、第1列はソートされますが、第0列はシャッフルされます。言い換えれば、私が望む

index 0 1 2 
1  5 5 5 
2  6 7 5 
3  7 9 8 

しかし、私は一度に1つの列をソートすることしかできません。私はdf.sort_values(by=df.columns[0:524],axis=0)を試しましたが、それはキーエラーをスローします。

答えて

4

私はあなたがvaluesによってnumpy arrayに変換してnumpy.sortまたはsort_valuesapplyを使用することができると思う:

df = df.apply(lambda x: np.sort(x.values)) 

別の解決策:

df = df.apply(lambda x: x.sort_values().values) 

print (df) 
 0 1 2 3 4 5 6 7 8 9 ... 490 491 492 \ 
0  0 0 0 0 0 0 0 0 0 0 ...  0 0 0 
1  0 0 0 0 0 0 0 0 0 0 ...  0 0 0 
2  0 0 0 0 0 0 0 0 0 0 ...  0 0 0 
3  0 0 0 0 0 0 0 0 0 0 ...  0 0 0 
4  0 0 0 0 0 0 0 0 0 0 ...  0 0 0 
5  0 0 0 0 0 0 0 0 0 0 ...  0 0 0 
6  0 0 0 0 0 0 0 0 0 0 ...  0 0 0 
7  0 0 0 0 0 0 0 0 0 0 ...  0 0 0 
8  0 0 0 0 0 0 0 0 0 0 ...  0 0 0 
9  0 0 0 0 0 0 0 0 0 0 ...  0 0 0 
10  0 0 0 0 0 0 0 0 0 0 ...  0 0 0 
11  0 0 0 0 0 0 0 0 0 0 ...  0 0 0 
12  0 0 0 0 0 0 0 0 0 0 ...  0 0 0 
13  0 0 0 0 0 0 0 0 0 0 ...  0 0 0 
14  0 0 0 0 0 0 0 0 0 0 ...  0 0 0 
15  0 0 0 0 0 1 0 0 0 0 ...  0 0 0 
16  0 0 0 0 0 1 1 0 0 0 ...  0 0 0 
17  0 0 0 0 0 1 1 0 0 0 ...  0 0 0 
18  0 0 0 0 0 1 1 0 0 0 ...  0 0 0 
19  0 0 0 0 0 1 1 1 1 0 ...  0 0 0 
20  0 0 1 0 0 1 1 1 1 0 ...  0 0 0 
21  0 0 1 0 0 1 1 1 1 1 ...  0 1 0 
22  0 1 1 0 0 1 1 1 1 1 ...  0 1 0 
23  1 1 1 0 0 1 1 1 1 1 ...  0 1 0 
24  1 1 1 0 0 1 1 1 1 1 ...  0 1 0 
25  1 1 1 1 0 1 1 1 1 1 ...  0 1 0 
26  1 1 1 1 0 1 1 1 1 1 ...  1 1 1 
27  1 1 1 1 0 1 1 1 1 1 ...  1 1 1 
28  1 1 1 1 0 1 1 1 1 1 ...  1 1 1 
29  1 1 1 1 0 1 1 1 1 1 ...  1 1 1 
... ... ... ... ... ... ... ... ... ... ... ... ... ... ... 
1970 97 98 98 98 98 98 99 98 98 98 ... 98 98 98 
1971 97 98 98 98 98 98 99 98 98 98 ... 98 98 98 
1972 98 98 98 98 98 98 99 98 98 98 ... 98 98 98 
1973 98 98 98 99 98 98 99 98 98 98 ... 98 98 98 
1974 98 98 98 99 98 98 99 98 98 98 ... 98 98 98 
1975 98 98 98 99 98 98 99 98 98 98 ... 98 98 98 
1976 98 98 98 99 98 98 99 98 99 99 ... 98 98 98 
1977 98 98 98 99 98 98 99 98 99 99 ... 98 98 99 
1978 98 98 98 99 98 98 99 98 99 99 ... 98 98 99 
1979 98 98 98 99 99 99 99 98 99 99 ... 98 98 99 
1980 98 98 98 99 99 99 99 98 99 99 ... 98 98 99 
1981 99 99 98 99 99 99 99 98 99 99 ... 99 98 99 
1982 99 99 98 99 99 99 99 98 99 99 ... 99 98 99 
1983 99 99 98 99 99 99 99 98 99 99 ... 99 98 99 
1984 99 99 98 99 99 99 99 99 99 99 ... 99 99 99 
1985 99 99 98 99 99 99 99 99 99 99 ... 99 99 99 
1986 99 99 98 99 99 99 99 99 99 99 ... 99 99 99 
1987 99 99 99 99 99 99 99 99 99 99 ... 99 99 99 
1988 99 99 99 99 99 99 99 99 99 99 ... 99 99 99 
1989 99 99 99 99 99 99 99 99 99 99 ... 99 99 99 
1990 99 99 99 99 99 99 99 99 99 99 ... 99 99 99 
1991 99 99 99 99 99 99 99 99 99 99 ... 99 99 99 
1992 99 99 99 99 99 99 99 99 99 99 ... 99 99 99 
1993 99 99 99 99 99 99 99 99 99 99 ... 99 99 99 
1994 99 99 99 99 99 99 99 99 99 99 ... 99 99 99 
1995 99 99 99 99 99 99 99 99 99 99 ... 99 99 99 
1996 99 99 99 99 99 99 99 99 99 99 ... 99 99 99 
1997 99 99 99 99 99 99 99 99 99 99 ... 99 99 99 
1998 99 99 99 99 99 99 99 99 99 99 ... 99 99 99 
1999 99 99 99 99 99 99 99 99 99 99 ... 99 99 99 

     493 494 495 496 497 498 499 
0  0 0 0 0 0 0 0 
1  0 0 0 0 0 0 0 
2  0 0 0 0 0 0 0 
3  0 0 0 0 0 0 0 
4  0 0 0 0 0 0 0 
5  0 0 0 0 0 0 0 
6  0 0 0 0 0 0 0 
7  0 0 0 0 0 0 0 
8  0 0 0 0 0 0 0 
9  0 0 0 0 0 0 0 
10  0 0 0 0 0 0 0 
11  0 0 0 0 0 0 0 
12  0 0 0 0 0 0 0 
13  0 0 0 0 0 0 0 
14  0 0 0 0 0 0 0 
15  0 0 0 0 1 0 0 
16  0 1 0 0 1 0 0 
17  0 1 0 0 1 0 0 
18  1 1 0 0 1 0 0 
19  1 1 1 0 1 0 0 
20  1 1 1 0 1 0 1 
21  1 1 1 0 1 0 1 
22  1 1 1 0 1 0 1 
23  1 1 1 0 1 0 1 
24  1 1 1 0 1 0 1 
25  1 1 1 0 1 0 1 
26  1 1 1 0 1 0 1 
27  1 1 1 1 1 0 1 
28  1 1 1 1 1 0 1 
29  1 1 1 1 1 0 1 
... ... ... ... ... ... ... ... 
1970 98 98 98 98 98 98 98 
1971 98 98 98 98 98 98 98 
1972 98 98 98 98 98 98 98 
1973 98 98 98 98 98 98 98 
1974 98 98 98 99 98 98 98 
1975 98 98 98 99 98 98 98 
1976 99 98 98 99 98 98 98 
1977 99 98 98 99 98 98 98 
1978 99 98 98 99 99 98 98 
1979 99 99 98 99 99 98 98 
1980 99 99 98 99 99 99 99 
1981 99 99 98 99 99 99 99 
1982 99 99 98 99 99 99 99 
1983 99 99 99 99 99 99 99 
1984 99 99 99 99 99 99 99 
1985 99 99 99 99 99 99 99 
1986 99 99 99 99 99 99 99 
1987 99 99 99 99 99 99 99 
1988 99 99 99 99 99 99 99 
1989 99 99 99 99 99 99 99 
1990 99 99 99 99 99 99 99 
1991 99 99 99 99 99 99 99 
1992 99 99 99 99 99 99 99 
1993 99 99 99 99 99 99 99 
1994 99 99 99 99 99 99 99 
1995 99 99 99 99 99 99 99 
1996 99 99 99 99 99 99 99 
1997 99 99 99 99 99 99 99 
1998 99 99 99 99 99 99 99 
1999 99 99 99 99 99 99 99 
+0

ありがとうございます。これは私のために働いた唯一の答えです。 – OfOurOwn

1
>>> df.sort_values(by=list(df.columns),axis=0) 
     0 1 2 
index   
1  5 5 5 
2  6 7 5 
3  7 9 8 
+1

は私のために一日を救いました!どうもありがとう。 – gseattle

0
df.sort(['col1','col2', ..., 'colN'],ascending=False) 

または

df.sort(list(df.columns),ascending=False) 
関連する問題