python - 如何在熊猫中检查文本列是否包含特定字符串
问题描述
我在熊猫中有以下数据框
job_desig salary
senior analyst 12
junior researcher 5
scientist 20
sr analyst 12
现在我想生成一列,该列将设置如下标志
sr = ['senior','sr']
job_desig salary senior_profile
senior analyst 12 1
junior researcher 5 0
scientist 20 0
sr analyst 12 1
我正在关注熊猫
df['senior_profile'] = [1 if x.str.contains(sr) else 0 for x in
df['job_desig']]
解决方案
|
您可以通过for regex连接 list 的所有值OR
,传递 toSeries.str.contains
和 last 转换为 integer 以True/False
进行1/0
映射:
df['senior_profile'] = df['job_desig'].str.contains('|'.join(sr)).astype(int)
如有必要,使用单词边界:
pat = '|'.join(r"\b{}\b".format(x) for x in sr)
df['senior_profile'] = df['job_desig'].str.contains(pat).astype(int)
print (df)
job_desig salary senior_profile
0 senior analyst 12 1
1 junior researcher 5 0
2 scientist 20 0
3 sr analyst 12 1
带有集合的解决方案,如果列表中只有一个单词值:
df['senior_profile'] = [int(bool(set(sr).intersection(x.split()))) for x in df['job_desig']]
推荐阅读
- reporting-services - SSRS:根据用户输入的(日期)参数值运行查询的变量?
- typescript - 在ionic html页面中显示分钟和秒数
- angular - 我正在尝试程序它显示错误
- visual-studio-code - 如何绕过 Windows 1903 中已验证的错误并启动 VSCode 集成终端?
- c# - .NET Core 2.2 插件框架和程序集重定向
- lisp - 如何计算不同字符的出现并将它们全部作为表格返回
- c# - 安装 Zulu 后出现“ORA-01017:用户名/密码无效;登录被拒绝”异常
- python-3.x - Python 3.7 发生 Selenium Web Driver 元素不可交互错误
- ansible - Ansible:增量追加到列表变量
- c# - c#在运行时从外部dll加载继承的类