基于一个导入的excel datafram运行多个函数

2024-05-03 12:26:53 发布

您现在位置:Python中文网/ 问答频道 /正文

我为每个客户机创建了多个函数,它们基本上都是相同的(它只会更改每个客户机中的工作人员名称)。你知道吗

它按其应该的方式运行第一个函数,但第二个函数不起作用。就像数据帧没有在整个代码中执行一样。你知道吗

import pandas as pd
import sys

#file loc
R1 = input('Data do Relatório desejado  (dd.mm) --->  ')
loc = r'C:\Users\lucas.mascia\Downloads\relatorio-{0}.xlsx'.format(R1)

#opening file with exact needed columns
df = pd.read_excel(loc)
df = df[[2,15,16,17]]

[...]
def func1():
    global df, R1, bcsulp1, bcsulp2

    #List of solicitantes in Postal Saude
    list_sol = [lista_solic["worker1"]]

    #filter Postal Saude Solicitantes
    df = df[(df['Client']==lista_clientes[2]) 
        & (df['worker'].isin(list_sol))]

    #Alphabetical order
    df = df.sort_index(by=['worker', 'place'])

    #Grouping data of column
    gp = df.groupby('worker')

    # Loop?
    for i in range(1,2):
        df = gp.get_group(list_sol[(i-1)])
        #Name_i         #############################################################
        #Protocolo interno e externo --------------------------------------------
        p_interno = df[(df['place'].str.contains("C. Martins"))
            & (df['task']==lista_tarefas[1])]
        globals()['fi'+str(i)] = len(p_interno)
        f_i = globals()['fi'+str(i)]

        p_externo = df[(~df['place'].str.contains("C. Martins"))
            & (df['task']==lista_tarefas[1])]
        globals()['fe'+str(i)] = len(p_externo)
        f_e = globals()['fe'+str(i)]

        #Protocolo Virtual interno e externo ------------------------------------
        pv_interno = df[(df['place'].str.contains("C. Martins"))
            & (df['task']==lista_tarefas[3])]
        globals()['vi'+str(i)] = len(pv_interno)
        v_i = globals()['vi'+str(i)]

        pv_externo = df[(~df['place'].str.contains("C. Martins"))
            & (df['task']==lista_tarefas[3])]
        globals()['ve'+str(i)] = len(pv_externo)
        v_e = globals()['ve'+str(i)]

        #Protocolo postal normal e especial
        pp_normal = df[(df['task']==lista_tarefas[51])]
        pp_especial = df[(df['task']==lista_tarefas[52])]
        globals()['postal'+str(i)] = len(pp_especial) + len(pp_normal)
        post = globals()['postal'+str(i)]

        #Copia integral e parcial 6,1 - 6,2
        copia_i = df[(df['task']==lista_tarefas[61])]
        copia_p = df[(df['task']==lista_tarefas[62])]
        globals()['copia'+str(i)] = len(copia_p) + len(copia_i)
        cop = globals()['copia'+str(i)]

        #Copia eletronica
        copia_elet = df[(df['task']==lista_tarefas[7])]
        globals()['copia_elet'+str(i)] = len(copia_elet)
        cop_e = globals()['copia_elet'+str(i)]

        #AIJ / Audiencia / Conciliatoria
        aij = df[(df['task']==lista_tarefas[81])]
        aud = df[(df['task']==lista_tarefas[82])]
        conc = df[(df['task']==lista_tarefas[83])]
        globals()['audiencia'+str(i)] = len(aij) + len(aud) + len(conc)
        audi = globals()['audiencia'+str(i)]


        globals()['bcsulp'+str(i)] = [f_i, f_e, v_i, v_e, post, cop, cop_e, audi]

    def func2(): [...]

    def func3(): [...]

    def func4(): [...]


    func1()
    fucn2()

出现以下错误:

Traceback (most recent call last):
  File "Relatorio_Filtro.py", line 736
    func2()
  File "Relatorio_Filtro.py", line 682
    df = gp.get_group(list_sol[(i-1)])
  File "C:..."
    inds = self._get_index(name)
  File "C:..."
    return self.indices[name]
KeyError: 'WORKER1'

问题:

我是否遗漏了一些东西,以至于在程序开始时导入的excel数据框会在整个程序中执行?你知道吗


Tags: dftasklendefplacelistcontainsstr