Eu resolvi usar a função do próprio pandas .round(), mas notei que ela arredondou alguns números para baixo, digamos assim.
Eu resolvi usar a função do próprio pandas .round(), mas notei que ela arredondou alguns números para baixo, digamos assim.
Olá, William! Como vai?
O que você está observando é um comportamento padrão da função .round()
do pandas, que segue a regra de arredondamento conhecida como arredondamento para par ou arredondamento do banqueiro. Essa regra arredonda para o número par mais próximo quando o número está exatamente na metade.
Exemplo:
1.5 → 2
2.5 → 2
Se você deseja um arredondamento diferente, você pode usar outras abordagens. Para arredondar sempre para cima, você pode usar o método numpy.ceil()
. Para baixo, numpy.floor()
.
No entanto, como você mencionou que não quer usar o NumPy, você pode fazer isso usando funções do próprio Python. Aqui está como você pode fazer isso:
dados_sem_vazio['cliente.tempo_servico'] = dados_sem_vazio['cliente.tempo_servico'].apply(lambda x: int(x) + 1 if x % 1 != 0 else int(x))
dados_sem_vazio['cliente.tempo_servico'] = dados_sem_vazio['cliente.tempo_servico'].apply(lambda x: int(x))
Essas funções lambda
verificam se o número é inteiro ou não e arredondam de acordo.
Espero ter ajudado e fico à disposição se precisar.
Abraço e bons estudos!