このページでは、インデックスや値に基づいてデータフレームをソート (並び替え) する方法について紹介します。
インデックス (行名・列名) に基づいてソートする
sort_index()
メソッドを利用して、インデックス(カラム名、行名)に基づいてソートを行うことができます。
ascending=False
は、降順にソートすることを示します。なお、ascending=False
を省略すると、昇順でのソートとなります。
axis=1
が行方向のソートを意味し、省略した場合は、行名に基づくソートとなります。
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 |
>>> 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()
メソッドを利用して、データフレームを値に基づいて並び替えを行うことができます。
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 |
>>> # 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 |
参考: 10 Minutes to pandas — pandas 0.18.0 documentation