Если вы просто хотите, чтобы строки нарушали это условие, используйте 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