Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/353.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python 在数据框中标记品牌关键词_Python_Pandas - Fatal编程技术网

Python 在数据框中标记品牌关键词

Python 在数据框中标记品牌关键词,python,pandas,Python,Pandas,我目前正在使用Python进行关键字分析。我有一个数据帧df,看起来像这样: keyword url camera canon.com canon camera canon.com 在搜索引擎优化你区分品牌和通用关键字。现在,第一个是通用的,而第二个包含URL中提到的品牌名称。基于此,我想建立一个新的列df['match'],并根据以下条件填充它: brands = ['canon', 'canon.de'] if df['keyword'] in br

我目前正在使用Python进行关键字分析。我有一个数据帧
df
,看起来像这样:

keyword        url
camera         canon.com
canon camera   canon.com
在搜索引擎优化你区分品牌和通用关键字。现在,第一个是通用的,而第二个包含URL中提到的品牌名称。基于此,我想建立一个新的列
df['match']
,并根据以下条件填充它:

brands = ['canon', 'canon.de']  

if df['keyword'] in brands == True
       df['match'] = 'brand'
    else
       df['match'] = 'generic'
我知道语法是完全错误的,但我希望您能理解我的意图:

keyword        url          match
camera         canon.com    generic
canon camera   canon.com    brand

一个想法是在列表理解中的拆分的
关键字
s和
any
中进行测试,然后通过以下方式设置新列:

编辑:对于正则表达式
,它的值在列表中,可以与连接的值一起使用:

mask = df['keyword'].str.contains('|'.join(brands))
df['match'] = np.where(mask, 'brand', 'generic')
print (df)
        keyword        url    match
0        camera  canon.com  generic
1  canon camera  canon.com    brand

谢谢!它确实像我想要的那样工作。然而,在运行了真实数据之后,我意识到我可能需要提供一个专门的品牌名称列表来增强结果。如果我提供了一个静态列表,而不是从
df['url']
中动态提取值,这会是什么样子?当然,我进行了编辑,以匹配与不同列表匹配的新“要求”。
mask = df['keyword'].str.contains('|'.join(brands))
df['match'] = np.where(mask, 'brand', 'generic')
print (df)
        keyword        url    match
0        camera  canon.com  generic
1  canon camera  canon.com    brand