我有一个包含两列“名称”和“任务”的日期框架。我想根据列表中的匹配条件创建第三列“ task_category”。请注意,以下数据仅作为示例,实际上我要查找100多个模式,而不是下面显示的三个。
df = pd.DataFrame(
{'Name': ["a","b","c"],
'Task': ['went to trip','Mall Visit','Cinema']})
task_category=['trip','Mall','Cinema']
Name Task task_category
0 a went to trip trip
1 b Mall Visit Mall
2 c Cinema Cinema
答案 0 :(得分:5)
pat=r'({})'.format('|'.join(task_category))
#'(trip|Mall|Cinema)'
df['task_category']=df.Task.str.extract(pat)
print(df)
Name Task task_category
0 a went to trip trip
1 b Mall Visit Mall
2 c Cinema Cinema
答案 1 :(得分:3)
我正在使用find all,因为这将帮助您在同一行中找到相同的关键字
df.Task.str.findall('|'.join(task_category)).str[0]
Out[1008]:
0 trip
1 Mall
2 Cinema
Name: Task, dtype: object
样本
df = pd.DataFrame(
{'Name': ["a","b","c"],
'Task': ['went to trip Cinema','Mall Visit','Cinema']})
df.Task.str.findall('|'.join(task_category))
Out[1012]:
0 [trip, Cinema]
1 [Mall]
2 [Cinema]
Name: Task, dtype: object