Проверьте, содержит ли группа одинаковое значение в Pandas - PullRequest
0 голосов
/ 04 февраля 2019

Мне любопытно, есть ли в Pandas встроенная функция для проверки того, что все члены группы (факторы в столбце) содержат одинаковое значение в другом столбце.

т.е. если мой фрейм данных был похож на приведенный ниже, он вернул бы пустой список.

Col1    Col2
2        A
2        A
0        B
0        B

Однако, если мой фрейм данных выглядел как таковой ( обратите внимание на 1 в Col1 ):

Col1    Col2
2        A
2        A
0        B
1        B 

Тогда выводом будет список, содержащий объект "B", поскольку группа B имеет разные значения в Col1.

Ответы [ 2 ]

0 голосов
/ 04 февраля 2019

Использовать групповой nunique и индекс уникальных значений> 1

a = df.groupby('Col2').Col1.nunique() > 1
a[a].index.tolist()

Выход:

['B']
0 голосов
/ 04 февраля 2019

Используйте DataFrame.duplicated для логической маски и преобразования столбца Col2 в list:

a = df.loc[~df.duplicated(keep=False), 'Col2'].unique().tolist()
print (a)
[]

И для вторых данных:

a = df.loc[~df.duplicated(keep=False), 'Col2'].unique().tolist()
print (a)
['B']

Альтернатива с DataFrame.drop_duplicates:

a = df.drop_duplicates(keep=False)['Col2'].unique().tolist()
print (a)
['B']
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...