python-3.x - 使用另一列中的预定义类别根据其中存在的文本单词对“字符串”列进行分类
问题描述
我有一个带有电子邮件域的 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'
不知何故,我无法解析数据框中的单行文本。请帮忙。
解决方案
在域中查找模式,提取并创建类别
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
推荐阅读
- regex - Powershell - 从带有“模板”的行中提取值
- java - 如何在 java 中读取 JSON 文件并将其存储在 JSONArray 中
- python - 具有多个 Y 轴范围的 Seaborn FacetGrid 图
- gitlab - 在 GitLab CI 中使用 Blackbox 解密文件
- python - 如何正确地将一个 .proto 文件导入另一个文件?
- node.js - 如何将 Firebase 云功能设置为路由到 Firestore 而不是实时数据库
- python - 尝试使用 PIL 和 BytesIO 显示图像但不返回任何内容
- sql - SQL CASE THEN 语句,其中 ID 具有多个值
- node.js - 运行“npm install”:Node-gyp 错误 - MSBUILD.exe 失败,退出代码:1
- mongodb - MongoDB Schema Evolution 最佳实践