Solucionado (ver solução)
Solucionado
(ver solução)
2
respostas

[Dúvida] Como converter os dados de uma coluna de float64 para int64?

Estou trabalhando em um projeto que tinha uma coluna com valores como exemplo '1.0', '8.0', sempre com o 0 após o ponto '.'

5 identificacaotabelacontacorrente 921 non-null float64 --> Formato onde aparece no método .info() no dataframe.

quando eu tento colocar

df_necessario['identificacaotabelacontacorrente'] = df_necessario['identificacaotabelacontacorrente'].astype(np.int64)

aparece o seguinte erro

IntCastingNaNError: Cannot convert non-finite values (NA or inf) to integer

Como converter os dados da coluna 'identificacaotabelacontacorrente' de float64 para int64 de forma correta?

2 respostas
solução!

Olá, Lucas!

Tô aqui para ajudar você! :)

Realmente, esses valores que você mencionou ( '1.0' e '8.0’) são do tipo float, como você viu ao usar o método info(). Contudo, o erro que você está obtendo, ocorre quando o Pandas tenta converter valores NaN (valores ausentes) ou infinitos para inteiros.

Para resolver esse problema, será necessário tratar esses valores, algumas possibilidades seriam:

→ Verificar se há valores NaN ou inf na sua coluna:

print(df_necessario['identificacaotabelacontacorrente'].isna().sum())  # Conta quantos NaNs
print((df_necessario['identificacaotabelacontacorrente'] == np.inf).sum())  # Conta quantos infinitos

→ Substituir NaN e inf por um valor numérico:

# Substitui NaN e infinitos por 0 antes da conversão
df_necessario['identificacaotabelacontacorrente'].replace([np.inf, -np.inf], 0, inplace=True)
df_necessario['identificacaotabelacontacorrente'] = df_necessario['identificacaotabelacontacorrente'].fillna(0)

** Uma outra alternativa seria excluir as linhas com valores NaN e infinitos ao invés de substituí-los, caso isso não cause impacto negativo em sua análise e entenda que é a melhor alternativa.

→ Após tratar esses dados, você pode seguir com a conversão de float para int.

Espero ter ajudado!

Abraço!

Caso este post tenha lhe ajudado, por favor, marcar como solucionado ✓. Bons Estudos!

Obrigado por ajudar!