如何将分类值分组为pandas中的一个组

时间:2018-01-19 16:23:08

标签: python pandas group-by categorical-data

我有一个adult数据集,其国家/地区列包含41个不同的国家/地区。为了计算准确性,我必须将分类值转换为一种增加维度的热编码器格式。在这里,在大熊猫中,我想将一些国家分组以减少维度。例如,对于{哥伦比亚厄瓜多尔秘鲁},我想将其表示为一个名为{South-America}的新组。是否有任何熊猫功能提供它?

2 个答案:

答案 0 :(得分:2)

如果您不需要默认值,则只需将字典传递给replace

mapping = {
        'Columbia':'South-America',
        'Ecuador':'South-America',
        'Peru':'South-America',
        'South-Africa':'Africa',
        'Namibia':'Africa',
    }

df['country'].replace(mapping)

如果您想要默认值,请创建映射函数:

def group_countries(country):

    mapping = {
        'Columbia':'South-America',
        'Ecuador':'South-America',
        'Peru':'South-America',
        'South-Africa':'Africa',
        'Namibia':'Africa',
    }

    try:
        return mapping[country]
    except:
        return country

将其应用到您的国家/地区列:

df['country_groups'] = df['country'].apply(group_countries)

答案 1 :(得分:2)

您可以直接将字典传递给map()方法mapping {'columbia': 'south america', 'peru': 'south america', 'usa': 'north america', 'ecuador': 'south america', 'canada': 'north america'} df country value 0 peru 1 1 columbia 5 2 ecuador 6 3 usa 4 4 canada 3 df['country_mapped'] = df.country.map(mapping) df country value country_mapped 0 peru 1 south america 1 columbia 5 south america 2 ecuador 6 south america 3 usa 4 north america 4 canada 3 north america

\token