我试图在一个包含字符串profile_type的“”决策者“”中添加一个新列“”,如果"job_title“有以下任何一个词:(主管或副总裁或首席运营官或首席执行官或首席营销官或首席运营官或首席执行官或合伙人或创始人或所有者或首席信息官或首席技术官或总裁或领导人),
“关键影响者”如果"job_title“有以下任何一个词:(高级或顾问或经理或学习或培训或人才或人力资源或顾问或L&D或领导)
"Influencer"用于"job_title“中的所有其他字段。
例如,如果'job_title‘包括一行“学习和发展专家”,代码必须只提取单词'Learning’,并将其作为'Key‘分隔到'profile_type’之下。
发布于 2022-11-28 08:09:55
下面的代码适用于我。
import re
s1 = pd.Series(df['job_title'])
condition1 = s1.str.contains('Director|Head|VP|COO|CEO...', flags=re.IGNORECASE, regex=True)
condition2 = s1.str.contains('Senior|Consultant|Manager|Learning...', flags=re.IGNORECASE, regex=True)
df_new['profile_type'] = np.where(condition1 == True, 'Decision Maker',
(np.where(condition2 == True, 'Key Influencer', 'Influencer')))发布于 2022-11-25 09:47:56
我会尝试这样的方法:
import numpy as np
dm_titles = ['Head', 'VP', 'COO', ...]
ki_titles = ['Senior ', 'Consultant', 'Manager', ...]
conditions = [
(any([word in new_df['job_title'] for word in dm_titles])),
(any([word in new_df['job_title'] for word in ki_titles])),
(all([word not in new_df['job_title'] for word in dm_titles] + [word not in new_df['job_title'] for word in ki_titles]))
]
values = ["Decision Maker", "Key Influencer", "Influencer"]
df_new['profile_type'] = np.select(conditions, values)如果你需要澄清,请告诉我!
发布于 2022-11-25 09:42:30
首先,定义一个作用于dataframe行的函数,并返回所需的内容:在您的示例中,如果'Decision Maker'包含列表中的任何单词,则为job_title。
def is_key_worker(row):
if (row["job_title"] == "CTO" or row["job_title"]=="Founder") # add more here.接下来,沿着1轴将该函数应用于您的dataframe。
df_new["Key influencer"] = df_new.apply(is_key_worker, axis=1)https://stackoverflow.com/questions/74570681
复制相似问题