Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/350.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python 在一系列列表中查找字典术语,然后返回键_Python_Pandas_Dataframe_Dictionary_Series - Fatal编程技术网

Python 在一系列列表中查找字典术语,然后返回键

Python 在一系列列表中查找字典术语,然后返回键,python,pandas,dataframe,dictionary,series,Python,Pandas,Dataframe,Dictionary,Series,我已经导入了一个从Linkedin导出的电子表格,其中包含了我的关系,并希望对不同级别的人的职位进行分类 所以,我创建了一个字典,其中包含查找每个职位级别的术语 该词典的第一个版本是: dicpositions = {'0 - CEO, Founder': ['CEO', 'Founder', 'Co-Founder', 'Cofounder', 'Owner'], '1 - Director of': ['Director', 'Head'],

我已经导入了一个从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'] }
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']))
我需要一个代码来读取电子表格中的每个位置,检查是否有这些术语,并在另一个特定列中返回相应的键

我正在读取的数据帧的示例数据如下:

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'] }
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
这是我写作时得到的一系列列表:

plan['Position'].str.split()
我已经完成了以下代码:

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
中的每个列表运行该代码,但我不这么做。然后我开始相信最好将这本应用于一本大词典,就像问题开头的
和返回词的键一样

我已尝试将以下代码应用于此程序:

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-首席执行官、创始人'

但我无法从它前进,并将_dic()中的函数
应用于我的问题

我非常感谢任何人的帮助

非常感谢。

试试这个:

dicgeral_2 = {'0 - Teste': ['Accelerator', 'Account'], '1 - Teste': ['Académico'], '2 - Teste': ['Visual', 'Volunteer']}

def in_dict(pos, dic):
    for key, value in dic.items():
        if pos in value:
            return key
    return False

in_dict("Account", dicgeral_2)
输出:

>>0 - Teste

请至少提供一些样本数据(请参阅)。嘿,AMC,谢谢你的反馈,我只有一些样本数据,还有我想要的输出和我拥有的输出!希望能有帮助!塔克斯!海姆·埃罗尔,谢谢你回答我。因此,找到给定元素的键非常好。尽管如此,我还是想找到一系列的列表。在我的例子中,列表代码的序列是
plan['Positions'].str.split()
。其中输出为:
0[(空白)]1[Académico]2[Accelerator,Program,Manager]3[Account,Coordinator]4[Account,Manager]…
Thx!嗨,对不起。你能编辑你的问题吗。提供一些示例数据和预期输出。嘿,你说得对!我试图让它更容易理解,把我得到的输出,我想要的输出和一个样本数据!希望能有帮助!太多了!