ホームページ >バックエンド開発 >Python チュートリアル >辞書に基づいて Pandas DataFrame 列をカスタムソートするにはどうすればよいですか?

辞書に基づいて Pandas DataFrame 列をカスタムソートするにはどうすればよいですか?

Linda Hamilton
Linda Hamiltonオリジナル
2024-11-27 19:30:14329ブラウズ

How Can I Custom Sort a Pandas DataFrame Column Based on a Dictionary?

Pandas データフレームでのカスタム並べ替え

Pandas では、カスタム順序に基づいてデータフレームを並べ替える必要がある場合があります。これは、辞書を使用して目的の並べ替え順序を定義することで実現できます。

問題:
月の名前を含む列を持つ Pandas データフレームがあります。次のようなカスタム辞書を使用してこの列を並べ替えたいとします。

custom_dict = {'March':0, 'April':1, 'Dec':3}

解決策:

カテゴリ系列の使用:
Pandas 0.15 では、これを処理するエレガントな方法を提供する Categorical Series が導入されました。シナリオ:

  1. カスタム順序を指定して、月列をカテゴリ系列に変換します:

    df['m'] = pd.Categorical(df['m'], ["March", "April", "Dec"])
  2. カテゴリに基づいてデータフレームを並べ替えます列:

    df.sort_values("m")

中間シリーズの使用:
Pandas 0.15 より前では、中間シリーズを利用してカスタム ソートを実現できました:

  1. ユーザー辞書を月に適用する列:

    s = df['m'].apply(lambda x: {'March':0, 'April':1, 'Dec':3}[x])
  2. 中間シリーズを並べ替えます:

    s.sort_values()
  3. 並べ替えられた中間シリーズにデータフレームのインデックスを設定し、 sort:

    df.set_index(s.index).sort()

Replace メソッドの使用:
Pandas の新しいバージョンでは、Series はより簡潔なソリューションを可能にする replace メソッドを提供します。

df['m'].replace({'March':0, 'April':1, 'Dec':3})

このメソッドは、月の値を、辞書で指定されている対応する並べ替え値に置き換えます。変更された月列に基づいてデータフレームを並べ替えると、希望のカスタム順序が得られます。

以上が辞書に基づいて Pandas DataFrame 列をカスタムソートするにはどうすればよいですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

声明:
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。