このページでは、インデックスや値に基づいてデータフレームをソート (並び替え) する方法について紹介します。
インデックス (行名・列名) に基づいてソートする
sort_index() メソッドを利用して、インデックス(カラム名、行名)に基づいてソートを行うことができます。
ascending=False は、降順にソートすることを示します。なお、ascending=False を省略すると、昇順でのソートとなります。
axis=1 が行方向のソートを意味し、省略した場合は、行名に基づくソートとなります。
>>> import pandas as pd
>>> import numpy as np
>>> # データフレーム df を作成
>>> dates = pd.date_range('20130101', periods=6)
>>> df = pd.DataFrame(np.random.randn(6,4), index=dates, columns=list('ABCD'))
>>> # 行名に基づいてソート
>>> df.sort_index(ascending=False)
A B C D
2013-01-06 1.332536 -1.359627 -0.630888 -1.211916
2013-01-05 0.731170 0.064171 -0.239234 0.298792
2013-01-04 0.168538 1.550001 1.002619 0.518160
2013-01-03 -0.220238 -0.521626 0.405202 -1.185080
2013-01-02 0.496579 -0.286737 0.745850 0.468184
>>> # カラム名 (列名) に基づいてソート
>>> df.sort_index(axis=1, ascending=False)
D C B A
2013-01-01 0.938796 -0.118212 -0.383022 -0.156236
2013-01-02 0.468184 0.745850 -0.286737 0.496579
2013-01-03 -1.185080 0.405202 -0.521626 -0.220238
2013-01-04 0.518160 1.002619 1.550001 0.168538
2013-01-05 0.298792 -0.239234 0.064171 0.731170
2013-01-06 -1.211916 -0.630888 -1.359627 1.332536
値に基づいてソートする
sort_values() メソッドを利用して、データフレームを値に基づいて並び替えを行うことができます。
>>> # B 列の値の小さい順 (昇順) にソート
>>> df.sort_values(by='B')
A B C D
2013-01-06 1.332536 -1.359627 -0.630888 -1.211916
2013-01-03 -0.220238 -0.521626 0.405202 -1.185080
2013-01-01 -0.156236 -0.383022 -0.118212 0.938796
2013-01-02 0.496579 -0.286737 0.745850 0.468184
2013-01-05 0.731170 0.064171 -0.239234 0.298792
>>> # C 列の値の大きい順 (降順) にソート
>>> df.sort_values(by='C', ascending=False)
A B C D
2013-01-04 0.168538 1.550001 1.002619 0.518160
2013-01-02 0.496579 -0.286737 0.745850 0.468184
2013-01-03 -0.220238 -0.521626 0.405202 -1.185080
2013-01-01 -0.156236 -0.383022 -0.118212 0.938796
2013-01-05 0.731170 0.064171 -0.239234 0.298792
2013-01-06 1.332536 -1.359627 -0.630888 -1.211916