首頁 > 後端開發 > Python教學 > 如何基於多種族列在 Pandas 中建立新的種族標籤列?

如何基於多種族列在 Pandas 中建立新的種族標籤列?

DDD
發布: 2024-12-10 11:33:14
原創
751 人瀏覽過

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

使用Pandas 中的函數根據多個列的值建立新欄位

在Pandas 中使用資料幀時,可能需要基於以下內容建立新列來自多個現有列的值。當需要將自訂函數按行應用於一組列以決定新列的值時,會出現一種常見場景。

範例場景

考慮以下具有六個與種族相關的資料框指標欄位:

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]
})
登入後複製

目標是建立一個名為「race_label」的新欄位,該列根據以下條件:

  1. 如果ERI_Hispanic 等於1,則回傳“Hispanic”。
  2. 如果所有非西班牙裔 ERI 欄位(ERI_AmerInd_AKNatv、ERI_Asian、ERI_Black_Afr.Amer、ERI_HI_PacIsl 和ERI_White) 大於1,則回傳「兩個或更多」。
  3. 對於ERI 列中的任何其他非零值,會傳回相應的種族標籤(例如,“A/I AK Native”、“Asian”、“Black/ AA”、“Haw/Pac Isl.”或“White”)。

解決方案

解決方案涉及兩個步驟:建立自訂函數來執行分類並將函數逐行應用於資料幀。

1.定義自訂函數

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'
登入後複製

此函數將資料幀的一行作為輸入,並根據提供的條件傳回適當的比賽標籤。

2.將函數套用到資料幀

要建立新的「race_label」列,請使用apply() 函數和axis=1 參數將label_race 函數套用到資料幀的每一行。

df['race_label'] = df.apply(label_race, axis=1)
登入後複製

有新欄位的結果資料框顯示如下:

    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  
登入後複製

以上是如何基於多種族列在 Pandas 中建立新的種族標籤列?的詳細內容。更多資訊請關注PHP中文網其他相關文章!

來源:php.cn
本網站聲明
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn
熱門教學
更多>
最新下載
更多>
網站特效
網站源碼
網站素材
前端模板