ホームページ >バックエンド開発 >Python チュートリアル >複数の民族列に基づいてパンダで新しい人種ラベル列を作成する方法は?

複数の民族列に基づいてパンダで新しい人種ラベル列を作成する方法は?

DDD
DDDオリジナル
2024-12-10 11:33:14750ブラウズ

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

Pandas の関数を使用して複数の列の値に基づいて新しい列を作成する

Pandas でデータフレームを操作する場合、以下に基づいて新しい列を作成する必要がある場合があります。複数の既存の列からの値。一般的なシナリオは、新しい列の値を決定するために列のセットに行単位でカスタム関数を適用する必要がある場合に発生します。

シナリオ例

6 つの民族関連の次のデータフレームを考えてみましょう。インジケーター列:

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 の場合、「ヒスパニック」を返します。
  2. すべての非ヒスパニック系 ERI 列 (ERI_AmerInd_AKNatv、ERI_Asian、ERI_Black_Afr.Amer、ERI_HI_PacIsl、およびERI_White) より大きい1、「Two or More」を返します。
  3. ERI 列のその他のゼロ以外の値については、対応する人種ラベル (例: 「A/I AK Native」、「Asian」、「Black/ AA"、"Haw/Pac Isl."、または "White")。

ソリューション

この解決策には、分類を実行するカスタム関数を作成し、その関数をデータフレームに行単位で適用するという 2 つのステップが含まれます。

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  

以上が複数の民族列に基づいてパンダで新しい人種ラベル列を作成する方法は?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

声明:
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。