Maison >développement back-end >Tutoriel Python >Comment créer une nouvelle colonne d'étiquette de race dans Pandas basée sur plusieurs colonnes d'origine ethnique ?
Lorsque vous travaillez avec des dataframes dans Pandas, il peut être nécessaire de créer une nouvelle colonne basée sur valeurs de plusieurs colonnes existantes. Un scénario courant se produit lorsqu'une fonction personnalisée doit être appliquée à un ensemble de colonnes par ligne pour déterminer les valeurs de la nouvelle colonne.
Considérez le cadre de données suivant avec six éléments liés à l'origine ethnique. colonnes d'indicateurs :
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] })
L'objectif est de créer une nouvelle colonne nommée 'race_label' qui classe chaque ligne en fonction de les critères suivants :
La solution comporte deux étapes : créer un fonction pour effectuer la classification et appliquer la fonction au dataframe par ligne.
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'
Cette fonction prend une ligne du dataframe en entrée et renvoie l'étiquette de race appropriée en fonction des critères fournis.
Pour créer la nouvelle colonne 'race_label', utilisez la fonction apply() avec le paramètre axis=1 pour appliquer la fonction label_race à chaque ligne du dataframe.
df['race_label'] = df.apply(label_race, axis=1)
Le dataframe résultant avec la nouvelle colonne est affiché ci-dessous :
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
Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!