1列からパンダデータフレームを並べ替える方法


237

私はこのようなデータフレームを持っています:

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

ご覧のとおり、月はカレンダー順ではありません。そこで、2番目の列を作成して、各月に対応する月番号(1〜12)を取得しました。そこから、このデータフレームを暦月の順序に従ってどのように並べ替えることができますか?

回答:


326

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']。それぞれの値は一意だからです。


75

上記の解決策を試してみましたが、結果が得られなかったので、自分に役立つ別の解決策を見つけました。上昇は= Falseの場合、中のデータフレームを注文することで降順、順序をデフォルトではTrueです。私はpython 3.6.6とpandas 0.23.4バージョンを使用しています。

final_df = df.sort_values(by=['2'], ascending=False)

詳細については、こちらのパンダのドキュメントをご覧ください


9

データに操作を追加するだけです。データフレームがあるとすると、df目的の出力を得るためにいくつかの操作を実行できます

ID         cost      tax    label
1       216590      1600    test      
2       523213      1800    test 
3          250      1500    experiment

(df['label'].value_counts().to_frame().reset_index()).sort_values('label', ascending=False)

与えるsortedAとしてラベルの出力をdataframe

    index   label
0   test        2
1   experiment  1

7

ちょうど別の解決策として:

文字列データ(月名)を分類し、次のように並べ替えることができます。

df.rename(columns={1:'month'},inplace=True)
df['month'] = pd.Categorical(df['month'],categories=['December','November','October','September','August','July','June','May','April','March','February','January'],ordered=True)
df = df.sort_values('month',ascending=False)

オブジェクトのmonth name作成中に指定したとおりに、順序付けされたデータを提供しCategoricalます。

弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.