Empresas
Empregos
  • Sobre nós
  • Soluções
    • Publicação de vagas
      Publique sua vaga e receba candidatos qualificados em 48h.
    • Avaliações de candidatos
      Mais de 500 testes técnicos e psicológicos, mais anti-fraude.
    • Headhunting
      Busca executiva personalizada do início ao fim.
    • Folha de Pagamento + EOR
      Dispersão de folha e EOR em mais de 15 países da LATAM.
  • Preços
  • Empregos

0

1.9K
Visualizações
¿Cómo redondear/eliminar los ceros finales ".0" en la columna de pandas?

Estoy tratando de ver si puedo eliminar los ceros finales de esta columna de número de teléfono.

Ejemplo:

 0 1 8.00735e+09 2 4.35789e+09 3 6.10644e+09

El tipo de esta columna es un objeto e intenté redondearlo, pero recibo un error. Revisé un par de ellos, sé que están en este formato "8007354384.0", y quiero deshacerme de los ceros finales con el punto decimal.

A veces recibí en este formato ya veces no, serán números enteros. Me gustaría verificar si la columna del teléfono tiene un cero final y luego eliminarlo.

Tengo este código pero estoy atascado en cómo verificar los ceros finales para cada fila.

 data.ix[data.phone.str.contains('.0'), 'phone']

Recibo un error => *** ValueError: cannot index with vector containing NA / NaN values . Creo que el problema se debe a que algunas filas tienen datos vacíos, que en algún momento recibo. El código anterior debería poder omitir una fila vacía.

¿Alguien tiene alguna sugerencia? Soy nuevo en pandas pero hasta ahora es una biblioteca útil. Su ayuda será apreciada.

Nota El ejemplo proporcionado arriba, la primera fila tiene datos vacíos, lo cual a veces obtengo. Solo para asegurarse de que esto no se represente como 0 para el número de teléfono.

También los datos vacíos se consideran una cadena, por lo que es una combinación de flotantes y cadenas, si las filas están vacías.

over 4 years ago · Santiago Trujillo
3 Respostas
Responde à pergunta

0

usar astype(np.int64)

 s = pd.Series(['', 8.00735e+09, 4.35789e+09, 6.10644e+09]) mask = pd.to_numeric(s).notnull() s.loc[mask] = s.loc[mask].astype(np.int64) s 0 1 8007350000 2 4357890000 3 6106440000 dtype: object
over 4 years ago · Santiago Trujillo Relatório

0

En Pandas/NumPy, los enteros no pueden tomar valores NaN, y las matrices/series (incluidas las columnas de marco de datos) son homogéneas en su tipo de datos, por lo que tener una columna de enteros donde algunas entradas son None / np.nan es absolutamente imposible .

EDITAR: data.phone.astype('object') debería hacer el truco; en este caso, Pandas trata su columna como una serie de objetos genéricos de Python, en lugar de un tipo de datos específico (por ejemplo, str / float / int ), a costa del rendimiento si tiene la intención de ejecutar cálculos pesados con estos datos (probablemente no en Tu caso).

Suponiendo que desea conservar esas entradas de NaN, su enfoque de conversión a cadenas es una posibilidad válida:

data.phone.astype(str).str.split('.', expand = True)[0]

debería darle lo que está buscando (hay métodos de cadena alternativos que puede usar, como .replace o .extract , pero .split parece el más sencillo en este caso).

Alternativamente, si solo está interesado en la visualización de flotadores (supongo que es poco probable), puede hacer pd.set_option('display.float_format','{:.0f}'.format) , que en realidad no afecta tu información.

over 4 years ago · Santiago Trujillo Relatório

0

Esta respuesta de cs95 elimina el ".0" final en una fila.

 df = df.round(decimals=0).astype(object)
over 4 years ago · Santiago Trujillo Relatório
Responde à pergunta
Encontrar trabalhos remotos

Descubra a nova forma de encontrar um emprego!

melhores empregos
Principais categorias de trabalho
Empresas
Postar vaga Preços Comercial
Jurídico
Termos e Condições Política de privacidade
© 2026 PeakU Inc. All Rights Reserved.
Andres GPT
Recomende algumas ofertas para mim
Preciso de ajuda