Jump to content

Arredondamento de Sum


raze

Postagens Recomendadas

Caros, estou tentando fazer um arredondamento de um sum em um data frame criado por um group mas não consegui de nenhuma forma.

Vejam:

#1 Gera a CE fazendo consulta na SD e traz somente os lançamentos de acordo ao filtro de CUSTOS ELEGÍVEIS
CE = SD.query(f'ANO_MES == "{MES}" &  RUBRICA != "{TXA}" & CLIENTE == ["{MAO}","{SPO}"] & CONTA != ["{AMOSTRA}"]')

#2 Faz consulta na CE e traz somente os campos necessários no TXT
CE = CE.groupby(['DEBITO', 'CREDITO'])['VALOR'].sum().apply(lambda x: round(x)).reset_index()

       DEBITO           CREDITO          VALOR

0 215010001.0      311010001.0      31967953

1  215010002.0     311010003.0      83254

 

Também tentei colocando um 2 no round(x,2) porém o retorno foi o seguinte:

#1 Gera a CE fazendo consulta na SD e traz somente os lançamentos de acordo ao filtro de CUSTOS ELEGÍVEIS
CE = SD.query(f'ANO_MES == "{MES}" &  RUBRICA != "{TXA}" & CLIENTE == ["{MAO}","{SPO}"] & CONTA != ["{AMOSTRA}"]')

#2 Faz consulta na CE e traz somente os campos necessários no TXT
CE = CE.groupby(['DEBITO', 'CREDITO'])['VALOR'].sum().apply(lambda x: round(x,2)).reset_index()

             DEBITO                    CREDITO                        VALOR 

0      215010001.0             311010001.0            3.1967953079999998e+07

1       215010002.0            311010003.0           8.3253529999999999e+04

 

Agradeço muito se puderem ajudar.

Link to comment
Compartilhe em outros sites

  • Pessoal da TecnoSpeed

Olá @raze, tudo bem?

Acredito que no seu caso, não esteja arredondando por conta do apply estar sendo aplicado ao groupby.

O apply pode ser usado no DataFrame inteiro ou em apenas uma coluna, eu geralmente utilizo ele na coluna por ser mais fácil.
Para utilizar ele no DataFrame o código fica um pouco diferente, pois é como se você "aplicasse uma função para todas as colunas do DataFrame".  
Caso você queira utilizar o apply para o dataframe inteiro, sugiro ver a Documentação.

Já tentou arredondar depois de criar esse DataFrame CE?

Segue abaixo o código.

CE['valor'] = CE['valor'].apply(lamda x : round(x,2))

Acredito que ao fazer isso irá funcionar.

Tenta ai, ai me diz se deu certo ou não 😄, caso ainda assim não funcionar, posso procurar outras soluções para resolver esse caso.

Estou a disposição para eventuais dúvidas.

Link to comment
Compartilhe em outros sites

  • Pessoal da TecnoSpeed

Que estranho 🤔, não vejo motivo para não funcionar o apply.

Vamos tentar utilizar outra abordagem então.

Estava olhando aqui e vi que existe a função .round do próprio pandas 😂, tenta executar:

CE['VALOR'] = CE['VALOR'].round(2)

Segue o link da Documentação

Acredito que ao fazer isso já vai funcionar kkk
Caso mesmo assim não funcione, vamos procurar outra alternativa.

Link to comment
Compartilhe em outros sites

Eu também havia tentado usar o round. Sou iniciante no Python porém acredito que o problema esteja sendo a base de origem.

O SD vem de um select no SQL Server onde o campo valor tem muitos caracteres após a vírgula.

Minha impressão é que não estou conseguindo mudar o formato de notação científica para round 2.

Link to comment
Compartilhe em outros sites

4 horas atrás, Thanael disse:

Que estranho 🤔, não vejo motivo para não funcionar o apply.

Vamos tentar utilizar outra abordagem então.

Estava olhando aqui e vi que existe a função .round do próprio pandas 😂, tenta executar:

CE['VALOR'] = CE['VALOR'].round(2)

Segue o link da Documentação

Acredito que ao fazer isso já vai funcionar kkk
Caso mesmo assim não funcione, vamos procurar outra alternativa.

Por algum motivo ele está entendendo que após o primeiro dígito, tudo é casa decimal

Link to comment
Compartilhe em outros sites

Crie uma conta ou entre para comentar 😀

Você precisa ser um membro para deixar um comentário.

Crie a sua conta

Participe da nossa comunidade, crie sua conta.
É bem rápido!

Criar minha conta agora

Entrar

Você já tem uma conta?
Faça o login agora.

Entrar agora
  • Quem está online   0 Membros, 0 Anônimos, 25 Visitantes (Ver lista completa)

    • There are no registered users currently online


×
×
  • Create New...