假设我正在尝试查找表中一对值的重复项数量。 列是“ A”和“ B” 我可以做
select A, B, count(*) as counter from table group by A, B
事实上,我也可以做到
select A, B from (select A, B, count(*) as counter from table group by A, B) where counter >= 2
仅处理具有n个重复项的值。
如何在熊猫中做同样的事情?
我可以做到
df.groupby(["A", "B"].count(),
但这给了我每个元素,我只想限制在那些count> = 2
例如,如果我有:
A B C
0 x a 1
1 x a 1
2 x b 2
3 y b 3
4 y a 1
我想标识前两列,因为groupby()的计数为2(重复对(x,a))。 对于任何值,我都想做同样的事情,而不仅仅是2。
答案 0 :(得分:1)
好像您可以在groupby
之后进行过滤
df.groupby(["A", "B"])['A'].count().loc[lambda x : x>2]
更新duplicated
df[df.duplicated(['A','B'],keep=False)]
Out[1178]:
A B C
0 x a 1
1 x a 1
transform
用于不同的
n=2
df[df.groupby(['A','B'])['A'].transform('count')==n]