从SQL到熊猫/ python的示例分组

时间:2019-04-25 02:28:28

标签: python pandas pandas-groupby

假设我正在尝试查找表中一对值的重复项数量。 列是“ 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。

1 个答案:

答案 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]