在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」的新欄位,該列根據以下條件:
解決方案涉及兩個步驟:建立自訂函數來執行分類並將函數逐行應用於資料幀。
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'
此函數將資料幀的一行作為輸入,並根據提供的條件傳回適當的比賽標籤。
要建立新的「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中文網其他相關文章!