Я импортировал таблицу, которую я экспортировал из Linkedin, из моих соединений и хочу классифицировать позиции людей на разных уровнях.
Итак, я создал словарь с терминами для поиска каждой позиции. уровень.
Первая версия словаря будет выглядеть следующим образом:
dicpositions = {'0 - CEO, Founder': ['CEO', 'Founder', 'Co-Founder', 'Cofounder', 'Owner'],
'1 - Director of': ['Director', 'Head'],
'2 - Manager': ['Manager', 'Administrador'],
'3 - Engenheiro': ['Engenheiro', 'Engineering'],
'4 - Consultor': ['Consultor', 'Consultant'],
'5 - Estagiário': ['Estagiário', 'Intern'],
'6 - Desempregado': ['Self-Employed', 'Autônomo'],
'7 - Professor': ['Professor', 'Researcher'] }
И мне нужен код, чтобы прочитать каждую позицию в моей таблице, проверить, есть ли какие-либо из этих терминов, и вернуть эквивалентный ключ. в другом указанном c столбце.
Примерные данные кадра данных, который я читаю, будут:
sample = pd.Series(data = (['(blank)'], ['Estagiário'], ['Professor', 'Adjunto'],
['CEO', 'and', 'Founder'], ['Engenheiro', 'de', 'Produção'],
['Consultant'], ['Founder', 'and', 'CTO'],
['Intern'], ['Manager', 'Specialist'],
['Administrador', 'de', 'Novos', 'Negócios'],
['Administrador', 'de', 'Serviços']))
, который возвращает:
0 [(blank)]
1 [Estagiário]
2 [Professor, Adjunto]
3 [CEO, and, Founder]
4 [Engenheiro, de, Produção]
5 [Consultant]
6 [Founder, and, CTO]
7 [Intern]
8 [Manager, Specialist]
9 [Administrador, de, Novos, Negócios]
10 [Administrador, de, Serviços]
dtype: object
I ' мы сделали следующий код:
import pandas as pd
plan = pd.read_excel('SpreadSheet Name.xlsx', sheet_name = 'Positions')
list0 = ['CEO', 'Founder', 'Co-Founder', 'Cofounder', 'Owner']
list1 = ['Director', 'Head']
list2 = ['Manager', 'Administrador']
listgeral = [dic0, dic1, dic2]
def in_list(list_to_search,terms_to_search):
results = [item for item in list_to_search if item in terms_to_search]
if len(results) > 0:
return '0 - CEO, Founder'
else:
pass
plan['PositionLevel'] = plan['Position'].str.split().apply(lambda x: in_list(x, listgeral[0]))
Фактический вывод:
Position PositionLevel
0 '(blank)' None
1 'Estagiário' None
2 'Professor Adjunto' None
3 'CEO and Founder' '0 - CEO, Founder'
4 'Engenheiro de produção' None
5 'Consultant' None
6 'Founder and CTO' '0 - CEO, Founder'
7 'Intern' None
8 'Manager Specialist' None
9 'Administrador de Novos Negócios' None
Ожидаемый вывод:
Position PositionLevel
0 '(blank)' None
1 'Estagiário' '5 - Estagiário'
2 'Professor Adjunto' '7 - Professor'
3 'CEO and Founder' '0 - CEO, Founder'
4 'Engenheiro de produção' '3 - Engenheiro'
5 'Consultant' '4 - Consultor'
6 'Founder and CTO' '0 - CEO, Founder'
7 'Intern' '5 - Estagiário'
8 'Manager Specialist' '2 - Manager'
9 'Administrador de Novos Negócios' '2 - Manager'
Сначала я планировал запустить этот код для каждого списка внутри моего listgeral
, но я не могу этого сделать. Затем я начал верить, что было бы лучше применить этот словарь для большого словаря, так же как dicpositions
в начале вопроса и вернуть ключ термина.
Я пытался чтобы применить следующий код к этой программе:
dictest = {'0 - CEO, Founder': ['CEO', 'Founder', 'Co-Founder', 'Cofounder', 'Owner'],
'1 - Director of': ['Director', 'Head'],
'2 - Manager': ['Manager', 'Administrador']}
def in_dic (x, dictest):
for key in dictest:
for elem in dictest[key]:
if elem == x:
return key
return False
Где вывод in_dic('CEO', dictest)
равен '0 - CEO, Founder'
И, например, вывод in_dic('Banana', dictest)
равен False
Но я не мог выйти из этого и применить эту функцию in_dic()
к моей проблеме.
Я был бы очень признателен за помощь.
Большое спасибо.