微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

检查无效观察

如何解决检查无效观察

我需要检查并删除那些在表位序列(DF 中的列)中包含任何非特定氨基酸字母(即 B、J、X 或 Z)的无效观察结果。

表位序列是数据框中的一列,其值类似于下面给出的样本。我需要检查该序列是否包含字母 B、J、X、Z,如果是,则删除所有相应的记录。

表位序列:

ACIIERKNRGELEYT
CDLNENQTWVDNGC
CASQEFDYEFDDVNE
DDDSYTTKRKF

我的当前代码正在单独检查每个代码,这意味着编写 4 行代码。有没有更好的方法来做到这一点,即使用 OR 运算符在一行中的所有 4 行代码?如果是,如何?

当前代码

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)

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。