我有一个由人员及其学位类型组成的数据框架:
data = {'Name': ['Alice','Bob','Chris','David'],
'Degree': ['phd','BA','MBA','B.Sc.']
}
df = pd.DataFrame(data, columns = ['Name', 'Degree'])
我想根据学位类型进行一次热编码:
data = {'Name': ['Alice','Bob','Chris','David'],
'is_bachelors': [0,1,0,1],
'is_masters': [0,0,1,0],
'is_phd': [1,0,0,0]
}
问题是,人们以许多不同的方式输入他们的学位类型。例如,对于博士,你可以有博士,博士,博士,博士,博士等等。基本上间隔和周期有很多变化。
此外,我不希望mba被标记为单身汉(因为它包含学士学位)。我发现这发生在Pandas街。
如有任何建议,将不胜感激。
3条答案
按热度按时间os8fio9y1#
由于相同的度类型都以相同的字符开头,因此可以降低它们并Map到第一个字符:
结果:
姓名(学士学位)硕士学位(PHDALICE001BOB100CHRIS0100DAVID100)
o8x7eapl2#
对于您提供的“phd”示例,您可以删除标点符号并使所有内容都小写,以捕获所有phd:
也许,这也适用于其他程度的大多数变化,但我无法在不了解其他变化的情况下对其进行评估。
0yg35tkg3#
您可以使用以下选项:
它解决了区分大小写、空格和标点符号的问题。同样在“mba”等包含“m”和“ba”的情况下,因为任何包含“m”的字符串都会在“ba”检查之前被捕获。