在python中有效地从现有变量创建新变量

2024-05-13 03:50:10 发布

您现在位置:Python中文网/ 问答频道 /正文

我正在尝试重新编码变量。我已经能够用map实现这一点,但是,我正在试图找到一种有效的方法,将多个值(a、b、c)重新编码为单个值。在下面的示例中,我对Asian有三种不同的分类,并希望相应地重新编码。。我尝试使用布尔值,但我得到了以下错误

df['Race'] = df['Race'].map({ 
    'Black or African American' : 'Black', 
    'White' : 'White', 
    'Hispanic or Latino': 'Non-White Hispanic', 
    ('Asian' | 'Asian/Indian/Pacific Islander' | 'Native Hawaiian or Other Pacific Islander') : 'Asian/Pacific Islander', 
    ('American Indian or Alaska Native' | 'Other/Mixed') : 'Multiracial/other', 
    'Unspecified' : np.nan
})

TypeError: unsupported operand type(s) for |: 'str' and 'str'

是否有一种更简单但仍然有效的方法将多个变量重新编码为一个值?它不一定是地图,这正是我最熟悉的


Tags: or方法map编码dfindianblacknative
3条回答

使用^{}

df['Race'] = df['Race'].map({ 
    'Black or African American' : 'Black', 
    'White' : 'White', 
    'Hispanic or Latino': 'Non-White Hispanic',  
    'Unspecified' : np.nan,
    **dict.fromkeys(['Asian', 'Asian/Indian/Pacific Islander', 'Native Hawaiian or Other Pacific Islander'], 'Asian/Pacific Islander'), 
    **dict.fromkeys(['American Indian or Alaska Native', 'Other/Mixed'], 'Multiracial/other'),
})

如何使用字典理解和解包:

df['Race'] = df['Race'].map({ 
    'Black or African American' : 'Black', 
    'White' : 'White', 
    'Hispanic or Latino': 'Non-White Hispanic', 
    **{i: 'Asian/Pacific Islander' for i in ('Asian', 'Asian/Indian/Pacific Islander', 'Native Hawaiian or Other Pacific Islander')}, 
    **{i: 'Multiracial/other' for i in ('American Indian or Alaska Native', 'Other/Mixed')}, 
    'Unspecified' : np.nan
})

事实上,这可以做到:

df['Race'] = df['Race'].map({ 
    'Black or African American' : 'Black', 
    'White' : 'White', 
    'Hispanic or Latino': 'Non-White Hispanic', 

    'Asian': 'Asian/Pacific Islander',
    'Asian/Indian/Pacific Islander': 'Asian/Pacific Islander',
    'Native Hawaiian or Other Pacific Islander': 'Asian/Pacific Islander', 

    'American Indian or Alaska Native': 'Multiracial/other',
    'Other/Mixed': 'Multiracial/other', 

    'Unspecified' : np.nan
})

相关问题 更多 >