Business
Jobs
  • About Us
  • Solutions
    • Job Postings
      Post your job and receive qualified candidates in 48h.
    • Candidate Assessments
      500+ technical and psychological tests, plus anti-fraud.
    • Headhunting
      Tailor-made executive search from start to finish.
    • Payroll + EOR
      Payroll dispersal and EOR across 15+ LATAM countries.
  • Pricing
  • Jobs

0

1.9K
Views
¿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 answers
Answer question

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 Report

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 Report

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 Report
Answer question
Find remote jobs

Discover the new way to find a job!

Top jobs
Top job categories
Business
Post vacancy Pricing Sales
Legal
Terms and conditions Privacy policy
© 2026 PeakU Inc. All Rights Reserved.
Andres GPT
Show me some job opportunities
There's an error!