Выберите строки с двумя одинаковыми записями в столбце - PullRequest
1 голос
/ 29 мая 2020

У меня есть pandas фрейм данных. И я хочу выбрать все строки, где в одном столбце у меня в два раза одинаковое значение. Итак, фрейм данных выглядит так:

group  value
A       1
A       2
B       3
B       1
B       4
C       1
C       1
D       4
D       5
D       3
D       2

И я хочу отфильтровать его, чтобы получить результат:

group  value
A       1
A       2
C       1
C       1

Как я могу этого добиться?

1 Ответ

3 голосов
/ 29 мая 2020

Используйте Series.value_counts с Series.map для значений счетчиков, сравните по Series.eq и отфильтруйте по boolean indexing :

df1 = df[df['group'].map(df['group'].value_counts()).eq(2)]

Или используйте GroupBy.transform:

df1 = df[df.groupby('group')['group'].transform('size').eq(2)]

print (df1)
  group  value
0     A      1
1     A      2
5     C      1
6     C      1

Наиболее чистым, но, к сожалению, самым медленным является использование DataFrameGroupBy.filter:

df = df.groupby('group').filter(lambda x: len(x) == 2)
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...