ホームページ >バックエンド開発 >Python チュートリアル >複数の民族列に基づいてパンダで新しい人種ラベル列を作成する方法は?
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」という名前の新しい列を作成することです。次の基準:
この解決策には、分類を実行するカスタム関数を作成し、その関数をデータフレームに行単位で適用するという 2 つのステップが含まれます。
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
以上が複数の民族列に基づいてパンダで新しい人種ラベル列を作成する方法は?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。