python - 检查无效观察
问题描述
我需要检查并删除那些在表位序列(DF 中的列)中包含任何非特异性氨基酸字母(即 B、J、X 或 Z)的观察结果。
表位序列是数据框中的一列,其值类似于下面给出的样本。我需要检查该序列是否包含字母 B、J、X、Z,如果是,则删除所有相应的记录。
表位序列:
ACIIERKNRGELEYT
CDLNENQTWVDNGC
CASQEFDYEFDDVNE
DDDSYTTKRKF
我拥有的当前代码正在单独检查每个代码,这意味着编写 4 行代码。有没有更好的方法来做到这一点,即所有 4 行代码在一行中使用 OR 运算符?如果是,如何?
当前代码:
final_df.drop(final_df[final_df['epit_seq'].str.contains('B')].index, inplace=True)
final_df.drop(final_df[final_df['epit_seq'].str.contains('J')].index, inplace=True)
final_df.drop(final_df[final_df['epit_seq'].str.contains('X')].index, inplace=True)
final_df.drop(final_df[final_df['epit_seq'].str.contains('Z')].index, inplace=True)
解决方案
由于contains默认情况下允许使用正则表达式,因此您可以缩短为如下所示的一行。
ignore = '|'.join(['B', 'J', 'X', 'A']) # use regular expression with or on substrings
final_df.drop(final_df[final_df['epit_seq'].str.contains(ignore)].index, inplace=True)
推荐阅读
- xml - 在文字斜杠上标记字符串
- python - Flask - 如何将每个键的 JSON 数据保存到它的列
- javascript - 如何在页面加载后启用 javascript 以将输入属性更改为禁用取决于从数据库加载的其他输入值?
- .net - 什么是适当的方式/如何在 Visual Studio 2017/2019 中打包 Visual Basic Windows 服务项目?
- javascript - 从命名插座导航到子路由器
- java - 我如何制作影子事实?
- c# - Asp.Net Core WebApi Serverless Application 未正确传递 Url 值
- javascript - 为什么我无法获取此按钮的文本(名称)?
- javascript - 格式 H:mm 的 JavaScript 时间正则表达式
- html - 如何使用 API 响应中的 HTML 标记