Python在相同len()的两列中使用不同的值_counts()
我有一个pandas数据框,它包含两列,跟踪编号[col_1]和ID编号[col_2]。跟踪编号可以重复,ID编号也可以重复-但是,每个跟踪和ID只能对应相邻列中的一个特定成员 我的两列中的每一列长度相同,但具有不同的唯一值计数,它们应该相同,如下所示:Python在相同len()的两列中使用不同的值_counts(),python,python-3.x,pandas,dataframe,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 ... |
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)表示-如何隔离这些事件?谢谢你的关注 您可以使用
groupby
和filter
:
df.groupby('ID').filter(lambda x: x.Trace.nunique() > 1)
输出:
Trace ID
2 3 9323.0
3 4 9323.0
通过使用
duplicated()
函数(),可以执行以下操作:
df[df['ID'].duplicated(keep=False)]
通过将keep
设置为False
,我们可以获得所有的副本(而不是排除第一个或最后一个副本)
返回:
Trace ID
2 3 9323
3 4 9323
你想找到副本,对吗?如果是这样,您想要行号还是重复的
ID
?@MSeifert-行号是首选。谢谢这只是返回一个df,其中有两个以上的跟踪编号实例-不是说,有两个相同跟踪编号的实例,而是相同跟踪编号的两个[或更多]不同ID。第一个groupby检查重复ID,第二个检查重复跟踪。@ScottBoston,但这只检查重复。OP询问每个ID组的唯一跟踪元素的数量。这将返回具有相同跟踪的相同ID,但您的不会。我认为这是不对的。
Trace ID
2 3 9323
3 4 9323