首页 > 解决方案 > 使用另一列中的预定义类别根据其中存在的文本单词对“字符串”列进行分类

问题描述

我有一个带有电子邮件域的 pandas 列,如下所示:

Sno  Domain_IDs
1   herowire.com
2   xyzenerergy.com
3   financial.com
4   oo-loans.com
5   okwire.com
6   cleaneneregy.com
7   pop-advisors.com

等等....

我在一个单独的数据框中有以下分类:

Sno category
1   contains wire
2   contains energy
3   contains loans
4   contains advisors

我想创建一个数据框,将数据分类如下:

Sno Domain_IDS         category
1   herowire.com       contains wire
2   xyzenerergy.com    contains energy
3   financial.com      others
4   oo-loans.com       contains loans
5   okwire.com         contains wire
6   cleaneneregy.com   contains energy
7   pop-advisors.com   contains advisors

我尝试使用 lambda 函数和使用“if else”语句的标准循环,通过使用

"emailAddress.str.contains('wire')"

contains 子句,但我收到以下错误:

AttributeError: 'str' object has no attribute 'str'

不知何故,我无法解析数据框中的单行文本。请帮忙。

标签: python-3.xpandasdataframedata-sciencecategories

解决方案


在域中查找模式,提取并创建类别

pat =  '('+'|'.join(cat['Sno category'].str.split().str[-1])+')'
df['category'] = ('contains ' + df['Domain_IDs'].str.extract(pat)).fillna('other')

   Sno  Domain_IDs          category
0   1   herowire.com        contains wire
1   2   xyzenenergy.com     contains energy
2   3   financial.com       other
3   4   oo-loans.com        contains loans
4   5   okwire.com          contains wire
5   6   cleaneneregy.com    other
6   7   pop-advisors.com    contains advisors

推荐阅读