Группировать по примеру от SQL до панд / python - PullRequest
0 голосов
/ 25 апреля 2019

Допустим, я пытаюсь найти, сколько дубликатов у меня есть для пары значений в таблице.Столбцы «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 Ответ

1 голос
/ 25 апреля 2019

Похоже, вы можете сделать фильтр после 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

n=2

df[df.groupby(['A','B'])['A'].transform('count')==n]
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...