Python 在数据框中标记品牌关键词
我目前正在使用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
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