1. ホーム
  2. python

[解決済み] pandasのデータフレームを1つの列からソートする方法

2022-03-23 10:30:27

質問

このようなデータフレームがあります。

print(df)

        0          1     2
0   354.7      April   4.0
1    55.4     August   8.0
2   176.5   December  12.0
3    95.5   February   2.0
4    85.6    January   1.0
5     152       July   7.0
6   238.7       June   6.0
7   104.8      March   3.0
8   283.5        May   5.0
9   278.8   November  11.0
10  249.6    October  10.0
11  212.7  September   9.0

見ての通り、月はカレンダー順ではありません。そこで、各月に対応する月番号(1~12)を取得するために、2つ目の列を作成しました。そこから、このデータフレームをカレンダーの月の順序に従ってソートするにはどうしたらよいでしょうか?

どのように解決するのですか?

使用方法 sort_values を使えば、特定の列の値でdfをソートすることができます。

In [18]:
df.sort_values('2')

Out[18]:
        0          1     2
4    85.6    January   1.0
3    95.5   February   2.0
7   104.8      March   3.0
0   354.7      April   4.0
8   283.5        May   5.0
6   238.7       June   6.0
5   152.0       July   7.0
1    55.4     August   8.0
11  212.7  September   9.0
10  249.6    October  10.0
9   278.8   November  11.0
2   176.5   December  12.0

2つのカラムでソートしたい場合は、カラムラベルのリストを sort_values で、カラムラベルはソートの優先順位に従って並べられる。 もし df.sort_values(['2', '0']) でソートされ、その結果はカラム 2 次に列 0 . しかし、この例では、これは本当に意味がありません。 df['2'] は一意である。