-
Contagem de Conteúdo
4 -
Ingressou
-
Última visita
Tipo de Conteúdo
Perfis
Fóruns
Blogs
Calendário
Downloads
Postagens postado por walacealves.mvn
-
-
olá Thanael,
tentei implementar e não deu certo, o código só fazia a operação nos edocs repetidos. coloquei todos que eram maior de 1 e mesmo assim não deu. estou te enviando o arquivo com todos od edocs que tenho.
Pode me ajudar?
abraços
Walace
-
2 minutos atrás, Thanael disse:
Olá @walacealves.mvn, tudo bem?
Desculpa a demora para responder 😅, vou tentar lhe ajudar, fiquei um pouco com dúvida em relação a como é essa tabela, ela seria um dataframe?
Código para criar este DataFrame, caso sua tabela já seja este DataFrame pode desconsiderar esse trecho de código abaixo.import pandas as pd tabela = ['02021AM28439.5', '12018/60612AM1024811.0', '22018/60612CF1158510.96', '32019/13866AM380307.65', '42019/13866CF1495193.7',] #Criar cada coluna edoc,tipo,valor = [],[],[] for item in tabela: #Criar uma tratativa para retirar o que queremos if item.find('AM') != -1: tipo_doc = 'AM' elif item.find('CF') != -1: tipo_doc = 'CF' # Armazenar a posição do tipo ou seja do AM ou CF index_tipo = item.find(tipo_doc) # Adicionar esses valores as suas respectivas listas tipo.append(tipo_doc) edoc.append(item[1 : index_tipo]) valor.append(item[index_tipo+2 :]) df = pd.DataFrame(data = {'edoc':edoc,'tipo':tipo,'valor':valor})
Esse DataFrame possui essa visualização.
Código para realizar o que você pediu.# Obter os edoc que aparecem em mais registros lista = df['edoc'].value_counts() duplicados = lista[lista >= 2].keys() # Criar o DataFrame dos resultados. df_result = pd.DataFrame({'edoc':[],'situacao':[],'status':[]}) # Percorrer pelo edoc que possuem mais do 1 registro for edoc in duplicados: valores = [] # percorrer pelos registros cujo edoc sejam iguais for index, item in df[df['edoc']==edoc].iterrows(): # Armazenar os valores do AM e do CF valores.append(float(item['valor'])) resultado = valores[0] / valores[1] # Classificação para o status if resultado < 0.80: status = 'ruim' elif resultado >= 0.81 and resultado <= 0.85: status = 'aceitavel' elif resultado > 0.86: status = 'bom' df_result = df_result.append({'edoc':edoc,'situacao':resultado,'status':status},ignore_index=True)
Caso queira deixar a situação em % basta alterar a ultima linha do código ali para
df_result = df_result.append({'edoc':edoc,'situacao':f'{(resultado*100):.2f}%','status':status},ignore_index=True)
Espero que isso resolva sua dúvida.
Também estou a disposição para lhe ajudar caso fique com quaisquer dúvidas. 👍Muito obrigado, vou testar já!
grande abraço
Walace
-
Olá
vejam a tabela
EDOCTIPOVALOR
02021AM28439.5
12018/60612AM1024811.0
22018/60612CF1158510.96
32019/13866AM380307.65
42019/13866CF1495193.7
enquanto o edoc for o mesmo(exenplo 2018/60612) preciso fazer uma operação, pegar o valor do tipo am e / pelo do cf, no ex será: 1024811.0/1158510.96= 0,88 e num novov dataframe exibir o edoc o valor da operação e compará-lo com a seguinte referencia <0,80 = ruim; >=0,81<= 0,85 = aceitável e; >0,86 bom. desta forma
EDOC SITUAÇÃO STATUS
2018/60612 88% bom
MUITO OBRIGADO
Walace
Dúvida - iniciante
em Python
Postado
Oi Thanael deu tudo certo agora, pode sõ me esclarecer uma outra dúvida: é possível fazer um executável no pycharm utilizandoum arquivo com macro? Porque aquele arquivo que te envei, eu slavei só uma parte dele o original tem macros e eu queria fazer um executávl e li que no pycharm fica mais leve porque usa o ambiente virtual.
abraços
walace