Панды: выбор строк на основе количества пар индекс + столбец - PullRequest
0 голосов
/ 07 октября 2019

У меня есть такой фрейм данных:

id    company    ......
111   A
222   B
333   B
111   E
444   C
555   C
555   C
333   A
111   A
222   D
444   C

, и я хотел бы получить строки, в которых id встречается в одном и том же company хотя бы дважды. Таким образом, результат будет:

id    company    .......
111   A
444   C
555   C
555   C
111   A
444   C

Хотя id 222 был там дважды, он был с другой компанией, поэтому он был удален. id 111 был там 3 раза, но только дважды с тем же company. Таким образом, остаются только 2 строки из этого company. И так далее.

Строки могут встречаться в одной и той же компании более чем в два раза.

Существуют некоторые вопросы по стеку, которые касаются выбора строк, в которых значение появляется более одного раза (например, Как выбрать строкив Pandas dataframe, где значение появляется более одного раза ), но я не могу найти ничего, что имеет дело с парой индекс + столбец, встречающейся более одного раза.

1 Ответ

1 голос
/ 07 октября 2019

Использование duplicated:

import pandas as pd

df = pd.DataFrame({'id': {0: 111, 1: 222, 2: 333, 3: 111, 4: 444, 5: 555, 6: 555, 7: 333, 8: 111, 9: 222, 10: 444},
                   'company': {0: 'A', 1: 'B', 2: 'B', 3: 'E', 4: 'C', 5: 'C', 6: 'C', 7: 'A', 8: 'A', 9: 'D', 10: 'C'}})

print (df[df.duplicated(subset=["id","company"],keep=False)])

#
     id company
0   111       A
4   444       C
5   555       C
6   555       C
8   111       A
10  444       C
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...