Сравнить уникальные значения столбца с соответствующими значениями другого столбца в списке

привет всем у меня есть фрейм данных

my_employees = [
            ('apple', 'credit'),
            ('apple', 'slates'),
            ('apple', 'intro_credit'), 
            ('apple','end_credit'), 
            ('apple', 'logo'), 
            ('apple', 'SMPTE'),
            ('apple','visible_logo'),
            ("mango","credit"), ("mango","intro_credit"), ("mango","end_credit"),("mango","slates"),("mango","SMPTE"),("mango","logo")
            ]

df1 = pd.DataFrame(my_employees, columns = ['Unique_ID','Annotation'])
print(df1)

в столбце unique_id для всех уникальных уникальных_идентификаторов мне нужно проверить столбец аннотаций для этих уникальных уникальных_идентификаторов, чтобы все эти уникальные уникальные_идентификаторы имели все значения этого

my_annotations = ['credit', 'intro_credit', 'end_credit', 'SMPTE','logo', 'visible_logo','slate'].

может ли кто-нибудь пролить свет на это, пожалуйста.

пожалуйста, опубликуйте ожидаемый результат

sammywemmy 13.12.2020 11:18

1) Для каждого уникального идентификатора столбец аннотаций должен иметь все типы аннотаций (кредит, интро_кредит, конец_кредита, SMPTE, логотип, видимый_логотип‌​, планшеты); иначе вернуть Unique_ID

pushpa 13.12.2020 11:25

если яблоко является одним уникальным_идентификатором, повторяющимся 7 раз, тогда проверьте, что соответствующий столбец аннотаций должен иметь все значения списка my_annotation, в противном случае мудро вернуть этот уникальный_ид

pushpa 13.12.2020 11:30

в приведенном выше df яблоко имеет все значения в списке my_annotation, но манго не имеет всех аннотаций, их всего несколько, поэтому мне нужно отобразить манго unique_id

pushpa 13.12.2020 11:46
Почему в Python есть оператор "pass"?
Почему в Python есть оператор "pass"?
Оператор pass в Python - это простая концепция, которую могут быстро освоить даже новички без опыта программирования.
Некоторые методы, о которых вы не знали, что они существуют в Python
Некоторые методы, о которых вы не знали, что они существуют в Python
Python - самый известный и самый простой в изучении язык в наши дни. Имея широкий спектр применения в области машинного обучения, Data Science,...
Основы Python Часть I
Основы Python Часть I
Вы когда-нибудь задумывались, почему в программах на Python вы видите приведенный ниже код?
LeetCode - 1579. Удаление максимального числа ребер для сохранения полной проходимости графа
LeetCode - 1579. Удаление максимального числа ребер для сохранения полной проходимости графа
Алиса и Боб имеют неориентированный граф из n узлов и трех типов ребер:
Оптимизация кода с помощью тернарного оператора Python
Оптимизация кода с помощью тернарного оператора Python
И последнее, что мы хотели бы показать вам, прежде чем двигаться дальше, это
Советы по эффективной веб-разработке с помощью Python
Советы по эффективной веб-разработке с помощью Python
Как веб-разработчик, Python может стать мощным инструментом для создания эффективных и масштабируемых веб-приложений.
0
4
146
1
Перейти к ответу Данный вопрос помечен как решенный

Ответы 1

Ответ принят как подходящий

Вы можете сделать:

# create unique Annotations for each Unique_ID
annotations = df1.groupby('Unique_ID')['Annotation'].apply(set).reset_index()

# create mask based on my_annotations, True if contains all the annotations in my_annotations
mask = annotations['Annotation'].apply(frozenset(my_annotations).issubset)

# filter based on the above mask
res = annotations[~mask].drop('Annotation', 1)
print(res)

Выход

  Unique_ID
1     mango

Более простой альтернативой является:

res = df1.groupby('Unique_ID')['Annotation'].apply(frozenset(my_annotations).issubset).reset_index()
output = res[~res['Annotation']].drop('Annotation', 1)
print(output)

Выход

  Unique_ID
1     mango

Большое спасибо, мой друг, я новичок в пандах, пытающихся получить результат за последние 4 часа, полученный именно с вашим кодом.

pushpa 13.12.2020 12:06

Другие вопросы по теме