Python数据帧将具有相同信息的行保留在3列中

2024-07-03 05:52:13 发布

您现在位置:Python中文网/ 问答频道 /正文

如果您的python数据帧如下所示:

    ID_1    ID_2    haplotypeID  locus
    A1  A1  hap.1.1  KIRa
    A1  A1  hap.1.2  KIRa
    A2  A2  hap.2.1  KIRa
    A2  A2  hap.2.2  KIRa
    A3  A3  hap.1.1  KIRa
    A4  A4  hap.2.2  KIRa
    A4  A4  hap.1.2  KIRa
    A1  A1  hap.1.1  KIRb
    A2  A2  hap.2.1  KIRb
    A2  A2  hap.2.2  KIRb
    A3  A3  hap.1.1  KIRb
    A3  A3  hap.1.2  KIRb
    A4  A4  hap.2.2  KIRb
    A4  A4  hap.1.2  KIRb
    A1  A1  hap.1.1  KIRc
    A2  A2  hap.2.1  KIRc
    A3  A3  hap.1.1  KIRc
    A3  A3  hap.1.2  KIRc
    A4  A4  hap.1.2  KIRc

共有4列,分别命名为:idu1、idu2、单倍型ID和位点。 我只想保留为3列ID\u 1、ID\u 2和locus复制的行对。在上面的例子中,输出结果如下:

    ID_1    ID_2    haplotypeID  locus
    A1  A1  hap.1.1  KIRa
    A1  A1  hap.1.2  KIRa
    A2  A2  hap.2.1  KIRa
    A2  A2  hap.2.2  KIRa
    A4  A4  hap.2.2  KIRa
    A4  A4  hap.1.2  KIRa
    A2  A2  hap.2.1  KIRb
    A2  A2  hap.2.2  KIRb
    A3  A3  hap.1.1  KIRb
    A3  A3  hap.1.2  KIRb
    A4  A4  hap.2.2  KIRb
    A4  A4  hap.1.2  KIRb
    A3  A3  hap.1.1  KIRc
    A3  A3  hap.1.2  KIRc

我希望有人能帮助我。提前谢谢!你知道吗


Tags: 数据ida2a1命名a3kiraa4
1条回答
网友
1楼 · 发布于 2024-07-03 05:52:13

试试这个:

df[df[['ID_1', 'ID_2', 'locus']].duplicated(keep=False)]
Out[449]: 
   ID_1 ID_2 haplotypeID locus
0    A1   A1     hap.1.1  KIRa
1    A1   A1     hap.1.2  KIRa
2    A2   A2     hap.2.1  KIRa
3    A2   A2     hap.2.2  KIRa
5    A4   A4     hap.2.2  KIRa
6    A4   A4     hap.1.2  KIRa
8    A2   A2     hap.2.1  KIRb
9    A2   A2     hap.2.2  KIRb
10   A3   A3     hap.1.1  KIRb
11   A3   A3     hap.1.2  KIRb
12   A4   A4     hap.2.2  KIRb
13   A4   A4     hap.1.2  KIRb
16   A3   A3     hap.1.1  KIRc
17   A3   A3     hap.1.2  KIRc

或者

df[df.duplicated(['ID_1', 'ID_2', 'locus'], keep=False)]

df.duplicated(['ID_1', 'ID_2', 'locus'])df[['ID_1', 'ID_2', 'locus']].duplicated()返回布尔数组。对于重复的条目,相应的元素为True(默认情况下,only the first ones)。通过传递keep=False,可以使所有的副本都具有真值。其余的是布尔索引。你知道吗

相关问题 更多 >