首页 >后端开发 >Python教程 >如何基于多种族列在 Pandas 中创建新的种族分类列?

如何基于多种族列在 Pandas 中创建新的种族分类列?

Linda Hamilton
Linda Hamilton原创
2024-12-20 02:11:09198浏览

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

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

在 Pandas 中,可以根据值存在于多个其他列中。当应用复杂的逻辑或自定义函数从数据中获取有意义的见解时,此功能非常有用。

作为说明性示例,请考虑根据六个种族列中的值创建一个标记为“race_label”的新列的任务:ERI_西班牙裔、ERI_AmerInd_AKNatv、ERI_亚洲、ERI_Black_Afr.Amer、ERI_HI_PacIsl 和 ERI_White。要求是使用以下标准根据种族对个人进行分类:

  1. 如果该人被算作西班牙裔,则他们被归类为“西班牙裔”。
  2. 如果总和所有非西班牙裔种族标志大于 1,他们被归类为“两个或更多”。
  3. 如果该人被计算在内作为美洲印第安人/阿拉斯加原住民,他们被归类为“A/I AK 原住民”。
  4. 如果此人被算作亚洲人,他们被归类为“亚洲人”。
  5. 如果此人被算作黑人/非裔美国人,他们被分类为“黑人/AA。”
  6. 如果此人被算作夏威夷原住民/太平洋岛民,他们被分类为“Haw/Pac Isl”。
  7. 如果该人被算作白人,则他们被归类为“白人”。

解决方案

为了实现这一点,自定义函数和 Pandas apply() 函数都是

  1. 定义自定义函数:

    def label_race(row):
       if row['eri_hispanic'] == 1:
          return 'Hispanic'
       if row['eri_afr_amer'] + row['eri_asian'] + row['eri_hawaiian'] + row['eri_nat_amer'] + row['eri_white'] > 1:
          return 'Two Or More'
       if row['eri_nat_amer'] == 1:
          return 'A/I AK Native'
       if row['eri_asian'] == 1:
          return 'Asian'
       if row['eri_afr_amer'] == 1:
          return 'Black/AA'
       if row['eri_hawaiian'] == 1:
          return 'Haw/Pac Isl.'
       if row['eri_white'] == 1:
          return 'White'
       return 'Other'
  2. 应用自定义函数Pandas:

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

这将在 Pandas 数据框中创建一个名为“race_label”的新列,其中包含基于输入条件的每行的适当分类。

通过结合自定义函数和 Pandas apply() 函数,我们可以创建一个从跨多个列应用的复杂逻辑派生的新列,从而促进高效数据分析和解释。

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

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