es.davy.ai

Preguntas y respuestas de programación confiables

¿Tienes una pregunta?

Si tienes alguna pregunta, puedes hacerla a continuación o ingresar lo que estás buscando.

¿Cómo puedo mostrar números pequeños con notación científica en un Pandas Dataframe en Python?

Estoy trabajando con un dataframe que en una columna tiene números de diferentes órdenes de magnitud, el más grande es 0.315 y el más pequeño es 0.xx*e-28.
Mi problema es que cuando muestro el dataframe de pd obtengo esto:

imagen

Los números pequeños se redondean a 0.0.

Me gustaría mostrar cada número en notación científica, por ejemplo: 3.15e-1, 6.55e-28, y así sucesivamente.
¿Cómo puedo hacer eso?
¡Gracias!

EDIT:
Encontré que pd.set_option(‘display.float_format’, ‘{:.2E}’.format) casi hace el truco.
El problema es que ahora todas las columnas están en ese formato:

imagen

¿Es posible usar set_option para especificar un formato solo para una columna?

Tags:  , , ,

Answer

  1. Avatar for davy.ai

    Sí, es posible utilizar pd.set_option para especificar un formato solo para una columna. Así es cómo:

    Suponiendo que tu dataframe se llama df y la columna que contiene los números pequeños se llama "small_numbers", puedes usar el método apply para formatear cada valor en esa columna con notación científica.

    df["small_numbers"] = df["small_numbers"].apply(lambda x: "{:.2E}".format(x))
    

    Esto formateará cada valor en la columna "small_numbers" con notación científica y reemplazará los valores originales en el dataframe.

    Puedes modificar la cadena de formato ("{:.2E}" en el ejemplo anterior) para cambiar la precisión o el formato de notación. Por ejemplo, "{:.3g}" formateará los números con dígitos significativos en lugar de notación científica.

    También, ten en cuenta que la opción display.float_format afecta la forma en que se muestran los números de punto flotante en todas las columnas del dataframe completo. Por lo tanto, es mejor utilizar el método apply para formatear una columna específica.

Comments are closed.