应用方法后拆分数据框列

Split dataframe column after apply method

我有这个代码来清理 LinkedIn 职位:

def clean_title(position):
    if 'back-end' in position.lower():
        return 'Backend Developer'
    elif 'front-end' in position.lower():
        return 'Frontend Developer'
    elif 'full-stack' in position.lower():
        return 'Fullstack Developer'
    elif  '-' in position.lower():
        return position.split('-')[0].strip()
    elif  '|' in position:
        return position.split('|')[0].strip()
    elif  '(' in position:
        return position.split('(')[0].strip()
    elif ':' in  position:
        return position.split(':')[1].split('-')[0].strip()
    elif '-' in  position:
        if '-' in position.split('-')[0].strip():
            return position.split('-')[0].split('-')[0].strip()
        else:
            return position.split('-')[0].strip()
    else:
        return position

df['Position'].apply(clean_title).value_counts()

执行前面的代码后,我仍然有一些职位不正确。 应用 clean_title 函数后,我想拆分仍然具有高分 (-) 字符的标题。

https://i.imgur.com/r0tbbN8.png

我该如何继续?

我想你想要的是递归调用clean_title()。也许像这样的实现:

def clean_title(position):
    if 'back-end' in position.lower():
        return 'Backend Developer'

    if 'front-end' in position.lower():
        return 'Frontend Developer'

    if 'full-stack' in position.lower():
        return 'Fullstack Developer'

    if  '-' in position:
        return clean_title(position.split('-')[0].strip())

    if  '|' in position:
        return clean_title(position.split('|')[0].strip())

    if  '(' in position:
        return clean_title(position.split('(')[0].strip())

    if ':' in  position:
        return clean_title(position.split(':')[0].strip())

    return position