将一列中的文本映射到另一列中的文本

2024-10-06 12:36:26 发布

您现在位置:Python中文网/ 问答频道 /正文

我有一个csv与一列包含各种形式的标题。我需要将所有首席执行官、首席运营官、首席运营官、首席营销官等映射到“C级”;将副总裁、高级副总裁、副总裁映射到另一列中的“高级副总裁”。你知道吗

我曾经尝试过用数字来映射标题,但没能做到,而且我认为可能有一种更简单的方法。我还希望在一个列中完成它们,而不是在映射它们时为C-Level和VP-SVP设置两个列。你知道吗

附件是预期结果。你知道吗

我该怎么解决这个问题?你知道吗

enter image description here


Tags: csv方法标题附件数字level形式首席
2条回答
df['col'] = np.where(df.column1.isin(['ceo', 'chief operating officer', 'coo', 'cmo']), 'c-level','vp-svp')

定义一个字典,使得Key是您请求的结果,值是一个可能性列表。

my_dict = {"C-LEVEL":['CHIEF',"THE CHIEF","MY CHIEF"],"VP-SVP":['VP','PRODUCT VP']}

要使用虚拟数据:

df=pd.DataFrame({"A":["CHIEF","MY CHIEF","VP","PRODUCT VP","THE CHIEF", "USER"]})

    A
0   CHIEF
1   MY CHIEF
2   VP
3   PRODUCT VP
4   THE CHIEF
5   USER

创建搜索键的函数:

def yourfunc(value):
    for k,v in my_dict.items():
        if value in my_dict.get(k):
            return k
    return "N/A"

最后,用lambda应用函数:

df['Result'] = df['A'].apply(lambda x: yourfunc(x))

期望结果:

          A       Result
0   CHIEF        C-LEVEL
1   MY CHIEF     C-LEVEL
2   VP           VP-SVP
3   PRODUCT VP   VP-SVP
4   THE CHIEF    C-LEVEL
5   USER         N/A

当您看到“N/A”结果时,您将知道您需要升级词典。你知道吗

相关问题 更多 >