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
DDDasal
2024-12-10 11:33:14773semak imbas

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]
})

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'

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)

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  

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:
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