猿问

如何提取唯一的首字母

我有带有技能名称的数据框,我想为这些技能提取唯一的首字母


Skill_name             Initials

Risk Management        RM

Scope Management       SM

Stakeholder Management StM

我尝试了正则表达式,但在这两种情况下它都给了我 SM。有任何想法吗?


杨魅力
浏览 84回答 2
2回答

拉风的咖菲猫

我建议像下面的代码片段一样遍历名称,并将所有现有的首字母缩写保存在一个集合中:all_names = [    'Risk Management',    'Scope Management',    'Stakeholder Management',]seen = set()def find_initials(name, seen):    first, last = name.split()    for i in range(1, len(last)+1):        for j in range(1, len(first) + 1):            initials = first[:j] + last[:i]            if initials not in seen:                seen.add(initials)                return initials    # full name is found in seen!    for i in range(100):        initials = f'{first}{last}{i}'        if initials not in seen:            seen.add(initials)            return initialsinitials = [find_initials(name, seen) for name in all_names]print(initials) # ['RM', 'SM', 'StM']

呼啦一阵风

我找到了另一个解决方案unique = list()def unique_initials(full_name):    name_list = full_name.split()    initials = ''    for name in name_list:        initials += name[0]    if initials not in unique:        unique.append(initials)        return initials    else:        initials = ''        i=0        for name in name_list:            if i==0:                initials += name[:2]                i +=1            else:                initials += name[0]        return initialsSkills['Initials'] = Skills['Name'].apply(lambda x: unique_initials(x))
随时随地看视频慕课网APP

相关分类

Python
我要回答