Как проверить совпадает ли значение элемента датафрейма любому из элементов списка
задача такая есть 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
Скажите пожалуйста как можно решить эту проблему и можно ли вообще?