390

列 、および を含むデータフレームがあるとしますabデータフレームを列ごとに昇順でc並べ替え、列ごとに降順で並べ替えたいとします。これを行うにはどうすればよいですか?bc

4

3 に答える 3

684

0.17.0 リリースの時点で、このsortメソッドは推奨されなくなり、sort_values. sort0.20.0 リリースで完全に削除されました。引数 (および結果) は同じままです。

df.sort_values(['a', 'b'], ascending=[True, False])

の昇順の引数を使用できますsort

df.sort(['a', 'b'], ascending=[True, False])

例えば:

In [11]: df1 = pd.DataFrame(np.random.randint(1, 5, (10,2)), columns=['a','b'])

In [12]: df1.sort(['a', 'b'], ascending=[True, False])
Out[12]:
   a  b
2  1  4
7  1  3
1  1  2
3  1  2
4  3  2
6  4  4
0  4  3
9  4  3
5  4  1
8  4  1

@renadeen のコメント

並べ替えはデフォルトでは設定されていません! そのため、sort メソッドの結果を変数に代入するか、メソッド呼び出しに inplace=True を追加する必要があります。

つまり、並べ替えられた DataFrame として df1 を再利用する場合:

df1 = df1.sort(['a', 'b'], ascending=[True, False])

また

df1.sort(['a', 'b'], ascending=[True, False], inplace=True)
于 2013-06-17T06:43:07.113 に答える
68

pandas 0.17.0 の時点でDataFrame.sort()廃止され、pandas の将来のバージョンで削除される予定です。データフレームを値でソートする方法は次のとおりです。DataFrame.sort_values

そのため、あなたの質問に対する答えは次のようになります

df.sort_values(['b', 'c'], ascending=[True, False], inplace=True)
于 2015-11-20T23:11:35.423 に答える