Rumah > pembangunan bahagian belakang > Tutorial Python > Bagaimana untuk Mencipta Lajur Label Perlumbaan Baharu dalam Panda Berdasarkan Lajur Berbilang Etnik?

Bagaimana untuk Mencipta Lajur Label Perlumbaan Baharu dalam Panda Berdasarkan Lajur Berbilang Etnik?

DDD
Lepaskan: 2024-12-10 11:33:14
asal
770 orang telah melayarinya

How to Create a New Race Label Column in Pandas Based on Multiple Ethnicity Columns?

Mencipta Lajur Baharu Berdasarkan Nilai daripada Berbilang Lajur Menggunakan Fungsi dalam Panda

Apabila bekerja dengan bingkai data dalam Pandas, anda mungkin perlu membuat lajur baharu berdasarkan nilai daripada berbilang lajur sedia ada. Senario biasa timbul apabila fungsi tersuai perlu digunakan pada set lajur mengikut baris untuk menentukan nilai lajur baharu.

Senario Contoh

Pertimbangkan rangka data berikut dengan enam berkaitan etnik lajur penunjuk:

df = pd.DataFrame({
    'ERI_Hispanic': [0, 1, 0, 0, 0, 0, 0, 0, 0, 0],
    'ERI_AmerInd_AKNatv': [0, 0, 0, 0, 0, 0, 0, 0, 0, 0],
    'ERI_Asian': [0, 0, 0, 0, 0, 0, 1, 0, 0, 0],
    'ERI_Black_Afr.Amer': [0, 0, 0, 0, 0, 0, 0, 0, 0, 0],
    'ERI_HI_PacIsl': [0, 0, 0, 0, 0, 0, 0, 1, 0, 0],
    'ERI_White': [1, 0, 1, 1, 0, 1, 1, 1, 1, 1]
})
Salin selepas log masuk

Matlamatnya adalah untuk mencipta lajur baharu bernama 'label_bangsa' yang mengelaskan setiap baris berdasarkan kriteria berikut:

  1. Jika ERI_Hispanik bersamaan dengan 1, kembalikan "Hispanik".
  2. Jika jumlah semua lajur ERI bukan Hispanik (ERI_AmerInd_AKNatv, ERI_Black_Asian, ERI_Black_Asian .Amer, ERI_HI_PacIsl dan ERI_White) lebih besar daripada 1, kembalikan "Dua atau Lebih".
  3. Untuk sebarang nilai bukan sifar lain dalam lajur ERI, kembalikan label perlumbaan yang sepadan (cth., "A/I AK Native", "Asian ", "Hitam/AA", "Haw/Pac Isl.", atau "Putih").

Penyelesaian

Penyelesaian melibatkan dua langkah: mencipta fungsi tersuai untuk melaksanakan pengelasan dan menggunakan fungsi itu pada rangka data mengikut baris.

1. Mentakrifkan Fungsi Tersuai

def label_race(row):
    if row['ERI_Hispanic'] == 1:
        return 'Hispanic'
    elif row['ERI_AmerInd_AKNatv'] + row['ERI_Asian'] + row['ERI_Black_Afr.Amer'] + row['ERI_HI_PacIsl'] + row['ERI_White'] > 1:
        return 'Two or More'
    elif row['ERI_AmerInd_AKNatv'] == 1:
        return 'A/I AK Native'
    elif row['ERI_Asian'] == 1:
        return 'Asian'
    elif row['ERI_Black_Afr.Amer'] == 1:
        return 'Black/AA'
    elif row['ERI_HI_PacIsl'] == 1:
        return 'Haw/Pac Isl.'
    elif row['ERI_White'] == 1:
        return 'White'
    else:
        return 'Other'
Salin selepas log masuk

Fungsi ini mengambil satu baris bingkai data sebagai input dan mengembalikan label perlumbaan yang sesuai berdasarkan kriteria yang disediakan.

2. Menggunakan Fungsi pada Bingkai Data

Untuk mencipta lajur 'race_label' baharu, gunakan fungsi apply() bersama-sama dengan axis=1 parameter untuk menggunakan fungsi label_race pada setiap baris bingkai data.

df['race_label'] = df.apply(label_race, axis=1)
Salin selepas log masuk

Bingkai data yang terhasil dengan lajur baharu dipaparkan di bawah:

    ERI_Hispanic  ERI_AmerInd_AKNatv  ERI_Asian  ERI_Black_Afr.Amer  ERI_HI_PacIsl  ERI_White  \
0             0                  0         0                     0             0          1   
1             1                  0         0                     0             0          0   
2             0                  0         0                     0             0          1   
3             0                  0         0                     0             0          1   
4             0                  0         0                     0             0          0   
5             0                  0         0                     0             0          1   
6             0                  0         1                     0             0          1   
7             0                  0         0                     0             1          1   
8             0                  0         0                     1             0          0   
9             0                  0         0                     0             0          1   

     race_label  
0         White  
1      Hispanic  
2         White  
3         White  
4         Other  
5         White  
6   Two or More  
7         White  
8  Haw/Pac Isl.  
9         White  
Salin selepas log masuk

Atas ialah kandungan terperinci Bagaimana untuk Mencipta Lajur Label Perlumbaan Baharu dalam Panda Berdasarkan Lajur Berbilang Etnik?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!

Kenyataan Laman Web ini
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
Tutorial Popular
Lagi>
Muat turun terkini
Lagi>
kesan web
Kod sumber laman web
Bahan laman web
Templat hujung hadapan