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

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

DDD
发布: 2024-12-10 11:33:14
原创
753 人浏览过

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

使用 Pandas 中的函数根据多个列的值创建新列

在 Pandas 中使用数据帧时,可能需要基于以下内容创建新列来自多个现有列的值。当需要将自定义函数按行应用于一组列以确定新列的值时,会出现一种常见场景。

示例场景

考虑以下具有六个与种族相关的数据框指标列:

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,则返回“Hispanic”。
  2. 如果所有非西班牙裔 ERI 列(ERI_AmerInd_AKNatv、ERI_Asian、ERI_Black_Afr.Amer、ERI_HI_PacIsl 和ERI_White) 大于1,返回“两个或更多”。
  3. 对于 ERI 列中的任何其他非零值,返回相应的种族标签(例如,“A/I AK Native”、“Asian”、“Black/ AA”、“Haw/Pac Isl.”或“White”)。

解决方案

解决方案涉及两个步骤:创建自定义函数来执行分类并将该函数逐行应用于数据帧。

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  
登录后复制

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

来源:php.cn
本站声明
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn
热门教程
更多>
最新下载
更多>
网站特效
网站源码
网站素材
前端模板