首页 > 解决方案 > 根据某些条件删除表中的行

问题描述

我有一个包含 2 列的文件

Col1 : Cluster number
Col2: Seq name 

序列名称可以有不同的名称:

前任:

NP_XXXXXX
YP_XXXXXX
AMN16433

等和 KQ976470.1:66008-66163(-):Atta_colombicaName: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

我删除Cluster2Cluster4 because there is no seqname with either a + or a -. 删除了 Cluster5,因为只有带有 a+或 a 的-seqname 并且没有其他 seqname。

非常感谢。

标签: pythonpandas

解决方案


您也可以使用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

推荐阅读