python - 根据某些条件删除表中的行
问题描述
我有一个包含 2 列的文件
Col1 : Cluster number
Col2: Seq name
序列名称可以有不同的名称:
前任:
NP_XXXXXX
YP_XXXXXX
AMN16433
等和
KQ976470.1:66008-66163(-):Atta_colombica
(Name:number-number(+ or -):Name1_Name2
)
(有很多不同的名称,但我很感兴趣只保留 Cluster 我至少有一个以这种格式命名的 seq 名称:(Name:number-number(+ or -):Name1_Name2
)(所以基本上我可以识别它们,因为只有它们会有一个+
或-
)
因此,如果出现以下情况,我会保留一个集群: - 至少有一个 seqname 的名称带有+
or-
并且至少one other seqname
.
如果:
- 只有 seqname 带有+
或-
在他们的名字中。-只有其他seqname。
因此,例如:
Cluster1 NP_075076
Cluster1 AMN16433
Cluster1 YP_063711
Cluster1 KQ976470.1:66008-66163(-):Cattus_sylvestris
Cluster1 AJP07295
Cluster1 AMN15329
Cluster2 YP_00999
Cluster2 YP_00989
Cluster2 YP_00971
Cluster2 YP_00988
Cluster2 AJP07295
Cluster3 KI976478.1:66021-66123(-):Canis_lupus
Cluster3 AJP07232
Cluster3 AJP07212
Cluster3 AZ976430.1:66045-66190(+):Cavia_porsellus
Cluster4 AHHYUIIY
Cluster5 AZ976490:66042-66190(-):Felis_porsellus
Cluster5 AA976490:66021-66130(+):Felis_porsellus
所以我应该得到:
我删除了,Cluster2
因为没有
Cluster1 NP_075076
Cluster1 AMN16433
Cluster1 YP_063711
Cluster1 KQ976470.1:66008-66163(-):Cattus_sylvestris
Cluster1 AJP07295
Cluster1 AMN15329
Cluster3 KI976478.1:66021-66123(-):Canis_lupus
Cluster3 AJP07232
Cluster3 AJP07212
Cluster3 AZ976430.1:66045-66190(+):Cavia_porsellus
我删除Cluster2
并Cluster4 because there is no seqname with either a + or a -.
删除了 Cluster5,因为只有带有 a+
或 a 的-
seqname 并且没有其他 seqname。
非常感谢。
解决方案
您也可以使用regex
以下方式在线获取它
df[df['Cluster'].isin(set(df[df['Name'].str.contains('\+|-')]['Cluster'].unique()).intersection(set(df[~df['Name'].str.contains('\+|-')]['Cluster'].unique())))]
结果是
Cluster Name
0 Cluster1 NP_075076
1 Cluster1 AMN16433
2 Cluster1 YP_063711
3 Cluster1 KQ976470.1:66008-66163(-):Cattus_sylvestris
4 Cluster1 AJP07295
5 Cluster1 AMN15329
11 Cluster3 KI976478.1:66021-66123(-):Canis_lupus
12 Cluster3 AJP07232
13 Cluster3 AJP07212
14 Cluster3 AZ976430.1:66045-66190(+):Cavia_porsellus
推荐阅读
- javascript - Bcrypt没有散列
- c# - Why is IMemoryCache's TryGetValue throwing an InvalidOperationException?
- node.js - 方法 findOrCreate() 未从我的用户模型中解析
- rest - HTTP code to return for unsupported PATCH
- excel - Replace "H" with ":" of a date and hour without changing the format of date vba
- javascript - Unable to change class name for Modals in Materialize CSS
- c++ - C ++函数包装器以捕获某些信号
- android - colors.xml:错误:不支持的类型“组件”(Android 工作室)
- javascript - Vue:模板根目录不允许使用 v-for 指令
- python - How can I use k-fold cross-validation in scikit-learn to get precision-recall per fold?