根据熊猫中的模式匹配创建一列

时间:2019-04-19 14:12:04

标签: pandas

我有一个包含两列“名称”和“任务”的日期框架。我想根据列表中的匹配条件创建第三列“ 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

2 个答案:

答案 0 :(得分:5)

使用series.str.extract()

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
相关问题