首页 >后端开发 >Python教程 >如何基于多个现有列在 Pandas 中创建新的种族标签列?

如何基于多个现有列在 Pandas 中创建新的种族标签列?

Susan Sarandon
Susan Sarandon原创
2024-12-18 20:27:10679浏览

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

根据 Pandas 中多个列的值创建新列

根据多个 Pandas 中的值在 Pandas 数据框中创建新列其他列,我们可以利用 apply() 函数。此函数允许我们将自定义函数应用于数据帧的每一行。

在这种情况下,我们希望根据以下条件创建一个带有种族标签的新列:

种族标签标准:

  • 如果 ERI_Hispanic 列为 1,则标签为“西班牙裔。”
  • 否则,如果剩余 ERI 列的总和大于 1,则标签为“两个或更多”。
  • 否则,如果 ERI_AmerInd_AKNatv 列为 1,则标签为“两个或更多”。 “A/I AK Native。”
  • 否则,如果 ERI_Asian 列为 1,则标签为“亚洲人”。
  • 否则,如果 ERI_Black_Afr.Amer 列为 1,则标签为“黑人/AA”。
  • 否则,如果 ERI_HI_PacIsl 列为 1,则标签为“Haw” /Pac Isl."
  • 否则如果 ERI_White 列为 1,则标签为“白色。”

种族标签的自定义函数:

要定义种族标签的自定义函数,我们可以使用以下代码:

def label_race(row):
   if row['ERI_Hispanic'] == 1:
      return 'Hispanic'
   if row['ERI_AmerInd_AKNatv'] + row['ERI_Asian'] + row['ERI_Black_Afr.Amer'] + row['ERI_HI_PacIsl'] + row['ERI_White'] > 1:
      return 'Two Or More'
   if row['ERI_AmerInd_AKNatv'] == 1:
      return 'A/I AK Native'
   if row['ERI_Asian'] == 1:
      return 'Asian'
   if row['ERI_Black_Afr.Amer'] == 1:
      return 'Black/AA'
   if row['ERI_HI_PacIsl'] == 1:
      return 'Haw/Pac Isl.'
   if row['ERI_White'] == 1:
      return 'White'
   return 'Other'

应用自定义函数apply():

要将 label_race 函数应用于数据帧的每一行,我们可以使用带有 axis=1 参数的 apply() 函数,该函数指定该函数应应用于每行row:

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

这将在数据框中创建一个名为race_label 的新列,并带有适当的比赛标签。

以上是如何基于多个现有列在 Pandas 中创建新的种族标签列?的详细内容。更多信息请关注PHP中文网其他相关文章!

声明:
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn