Как проверить совпадает ли значение элемента датафрейма любому из элементов списка

задача такая есть dataframe Positions состоящий из одного столбца, длинной 70471 строк, который содержит занимаемые должности типа "член Совета директоров, начальник юридического управления" и так далее. И есть список "ключей" Keysl длинной 1124 строки и содержит также названия должностей.

Нужно проверить совпадает ли каждый элемент из датафрейма любому из элементов списка. Нужно проверить на полное совпадение и частичное совпадение.

Входные данные:

Position DataFrame

Position
член Совета директоров
начальник юридического управления
старший помощник прокурора
заместитель начальника отдела регистрации и у...
Генеральный директор
Первый вице - президент, Президент
Начальник Управления, Финансовое Управление
Начальник Управления, Управление Планирования...
Начальник Управления, Управление Планирования...
Начальник Отдела - Заместитель Начальника Упр...

Keysl

Keysl = ['Руководитель Администрации Президента Российской Федерации', 'Первый заместитель Руководителя Администрации Президента Российской Федерации', 'Заместитель Руководителя Администрации Президента Российской Федерации', 'Заместитель Руководителя Администрации Президента Российской Федерации - пресс-секретарь Президента Российской Федерации', 'Прокурор']

Я хочу получить Dataframe выглядещий в идеале как то так:

Position Goverment
член Совета директоров -
начальник юридического управления -
старший помощник прокурора Прокурор
заместитель начальника отдела регистрации и у... -
Генеральный директор -
Первый вице - президент, Президент -
Начальник Управления, Финансовое Управление -
Начальник Управления, Управление Планирования... -
Начальник Управления, Управление Планирования... -
Начальник Отдела - Заместитель Начальника Упр... -

Я пыталась сделать следующее:

def is_part_in_list(str_, words):
    for word in words:
        if word.lower() in str_.lower():
            return True
    return False

l =[]
for i in range(0,len(Positions.iloc[:,0])):
    words = Keysl
    str_ = str(Positions.iloc[i,:])
    l.append(is_part_in_list(str_, words))
    OUTPUT = pd.DataFrame(l)

Получила

IndexingError: Too many indexers

Также пыталась делать вот так:

for i in range(0,len(Positions.iloc[10,0])):
    if str(Positions.iloc[i,0]) in Keysl:
        print("Yep")
    else:
        print("Nop")

Опять получилаа ту же ошибку

IndexingError: Too many indexers

Скажите пожалуйста как можно решить эту проблему и можно ли вообще?


Ответы (0 шт):