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