Найти, где столбец соответствует более одного в другом столбце - PullRequest
0 голосов
/ 20 января 2019

Мне нужны результаты, чтобы иметь кардинальность 1: 1, поэтому мне нужно проверить, существует ли значение в COL1 более одного раза в COL2

COL1    COL2
A   1
B   2
B   2
B   3
C   4
D   5
E   5
E   5

Используя Python (желательно Pandas, если не существует лучшего способа), я хочу увидеть все строки, в которых значение в COL1 имеет более одного совпадения в COL2? В приведенном выше примере я хочу знать, когда COL1 = B имеет более одного совпадения в COL2 (т.е. кардинальность в COL1 = B совпадает / объединяется с COL2 = 2 и также 3?

1 Ответ

0 голосов
/ 20 января 2019

Если вы просто хотите, чтобы строки нарушали это условие, используйте groupby и проверьте с помощью nunique:

df[df.groupby('COL1').COL2.transform('nunique') > 1]

Или с groupby, nunique и map:

df[df.COL1.map(df.groupby('COL1').COL2.nunique()) > 1]

  COL1  COL2
1    B     2
2    B     2
3    B     3

Если вы хотите отобразить значение COL1 в значения COL2, вы можете использовать дополнительные groupby и apply:

df[df.groupby('COL1').COL2.transform('nunique') > 1].groupby('COL1').COL2.apply(set)

COL1
B    {2, 3}
Name: COL2, dtype: object

И, наконец, если вам нужно только "количество элементов" для> 1 значений COL1, используйте

df.groupby('COL1').COL2.nunique().to_frame().query('COL2 > 1')

      COL2
COL1      
B        2
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...