Python Pandas在同一个len()的两列中有不同的value_counts()

时间:2017-05-18 19:09:58

标签: python python-3.x pandas dataframe

我有一个包含两列的pandas数据框,其中包含跟踪号[col_1]和ID号[col_2]。跟踪号码可以是重复的,ID号也可以是重复的 - 但是,每个跟踪号码和ID应仅对应相邻列中的特定伙伴。

我的两列中的每一列都具有相同的长度,但具有不同的唯一值计数,它们应该相同,如下所示:

in[1]:  Trace | ID
        1     | 5054
        2     | 8291
        3     | 9323
        4     | 9323
        ...   |
        100   | 8928

in[2]:  print('unique traces: ', df['Trace'].value_counts())
        print('unique IDs: ', df['ID'].value_counts())

out[3]: unique traces: 100
        unique IDs: 99

在上面的代码中,相同的ID号(9232)由两个跟踪号(3& 4)表示 - 我如何隔离这些事件?谢谢你的期待!

3 个答案:

答案 0 :(得分:2)

使用duplicated()函数(docs),您可以执行以下操作:

df[df['ID'].duplicated(keep=False)]

通过将keep设置为False,我们会获得所有重复项(而不是排除第一项或最后一项)。

返回:

Trace   ID
2   3   9323
3   4   9323

答案 1 :(得分:1)

您可以使用groupbyfilter

df.groupby('ID').filter(lambda x: x.Trace.nunique() > 1)

输出:

  Trace      ID
2     3  9323.0
3     4  9323.0

答案 2 :(得分:0)

#this should tell you the index of Non-unique Trace or IDs.

df.groupby('ID').filter(lambda x: len(x)>1)
Out[85]: 
   Trace    ID
2      3  9323
3      4  9323

df.groupby('Trace').filter(lambda x: len(x)>1)
Out[86]: 
Empty DataFrame
Columns: [Trace, ID]
Index: []