Heim >Backend-Entwicklung >Python-Tutorial >Wie erstelle ich eine neue Rassenbezeichnungsspalte in Pandas basierend auf mehreren Ethnizitätsspalten?

Wie erstelle ich eine neue Rassenbezeichnungsspalte in Pandas basierend auf mehreren Ethnizitätsspalten?

DDD
DDDOriginal
2024-12-10 11:33:14727Durchsuche

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

Erstellen einer neuen Spalte basierend auf Werten aus mehreren Spalten mithilfe einer Funktion in Pandas

Bei der Arbeit mit Datenrahmen in Pandas kann es erforderlich sein, eine neue Spalte basierend auf zu erstellen Werte aus mehreren vorhandenen Spalten. Ein häufiges Szenario entsteht, wenn eine benutzerdefinierte Funktion zeilenweise auf eine Reihe von Spalten angewendet werden muss, um die Werte der neuen Spalte zu bestimmen.

Beispielszenario

Betrachten Sie den folgenden Datenrahmen mit sechs auf die ethnische Zugehörigkeit bezogenen Daten Indikatorspalten:

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

Das Ziel besteht darin, eine neue Spalte mit dem Namen „race_label“ zu erstellen, die jede Zeile basierend auf Folgendem klassifiziert Kriterien:

  1. Wenn ERI_Hispanic gleich 1 ist, geben Sie „Hispanic“ zurück.
  2. Wenn die Summe aller nicht-hispanischen ERI-Spalten (ERI_AmerInd_AKNatv, ERI_Asian, ERI_Black_Afr.Amer, ERI_HI_PacIsl und ERI_White ) größer als 1 ist, geben Sie „Zwei“ zurück oder mehr".
  3. Für jeden anderen Wert ungleich Null in den ERI-Spalten geben Sie die entsprechende Rassenbezeichnung zurück (z. B. „A/I AK Native“, „Asian“, „Black/AA“, „Haw“) /Pac Isl.“ oder „White“).

Lösung

Die Lösung umfasst zwei Schritte: Erstellen einer benutzerdefinierten Funktion zur Durchführung der Klassifizierung und Anwenden der Funktion zeilenweise zum Datenrahmen hinzufügen.

1. Definieren der benutzerdefinierten Funktion

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'

Diese Funktion verwendet eine Zeile des Datenrahmens als Eingabe und gibt die entsprechende Rassenbezeichnung basierend auf den bereitgestellten Kriterien zurück.

2. Anwenden der Funktion auf den Datenrahmen

Um die neue Spalte „race_label“ zu erstellen, verwenden Sie die Funktion apply() zusammen mit dem Parameter axis=1, um die Funktion label_race auf jede Zeile des Datenrahmens anzuwenden.

df['race_label'] = df.apply(label_race, axis=1)

Der resultierende Datenrahmen mit der neuen Spalte wird unten angezeigt:

    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  

Das obige ist der detaillierte Inhalt vonWie erstelle ich eine neue Rassenbezeichnungsspalte in Pandas basierend auf mehreren Ethnizitätsspalten?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Stellungnahme:
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn