Rumah >pembangunan bahagian belakang >Tutorial Python >Bagaimanakah Saya Boleh Menyisih Lajur Pandas DataFrame Berdasarkan Kamus?

Bagaimanakah Saya Boleh Menyisih Lajur Pandas DataFrame Berdasarkan Kamus?

Linda Hamilton
Linda Hamiltonasal
2024-11-27 19:30:14274semak imbas

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

Isih Tersuai dalam Bingkai Data Pandas

Dalam Panda, kadangkala anda mungkin perlu mengisih kerangka data berdasarkan pesanan tersuai. Ini boleh dicapai menggunakan kamus untuk mentakrifkan susunan isihan yang diingini.

Masalah:
Anda mempunyai bingkai data Pandas dengan lajur yang mengandungi nama bulan. Anda mahu mengisih lajur ini menggunakan kamus tersuai, seperti:

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

Penyelesaian:

Menggunakan Siri Kategori:
Pandas 0.15 memperkenalkan Siri Kategori, yang menyediakan cara yang elegan untuk mengendalikan perkara ini senario:

  1. Tukar lajur bulan kepada siri kategori, dengan menyatakan susunan tersuai:

    df['m'] = pd.Categorical(df['m'], ["March", "April", "Dec"])
  2. Isih bingkai data berdasarkan kategori lajur:

    df.sort_values("m")

Menggunakan Siri Perantara:
Sebelum Pandas 0.15, anda boleh menggunakan siri perantara untuk mencapai pengisihan tersuai:

  1. Gunakan kamus tersuai pada bulan tersebut lajur:

    s = df['m'].apply(lambda x: {'March':0, 'April':1, 'Dec':3}[x])
  2. Isih siri perantara:

    s.sort_values()
  3. Tetapkan indeks bingkai data kepada siri perantara yang diisih dan isikan :

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

Menggunakan Ganti Kaedah:
Dalam versi Pandas yang lebih baharu, Siri menawarkan kaedah ganti yang membolehkan penyelesaian yang lebih ringkas:

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

Kaedah ini menggantikan nilai bulan dengan nilai pengisihan sepadan yang dinyatakan dalam kamus. Mengisih bingkai data berdasarkan lajur bulan yang diubah suai akan mencapai pesanan tersuai yang diingini.

Atas ialah kandungan terperinci Bagaimanakah Saya Boleh Menyisih Lajur Pandas DataFrame Berdasarkan Kamus?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!

Kenyataan:
Kandungan artikel ini disumbangkan secara sukarela oleh netizen, dan hak cipta adalah milik pengarang asal. Laman web ini tidak memikul tanggungjawab undang-undang yang sepadan. Jika anda menemui sebarang kandungan yang disyaki plagiarisme atau pelanggaran, sila hubungi admin@php.cn