¿Cómo se puede modificar el formato para la salida de una operación groupby en pandas que produce notación científica para números muy grandes?
Sé cómo formatear cadenas en Python, pero estoy perdido cuando se trata de aplicarlo aquí.
df1.groupby('dept')['data1'].sum()
dept
value1 1.192433e+08
value2 1.293066e+08
value3 1.077142e+08
Esto suprime la notación científica si convierto a cadena pero ahora me pregunto cómo formatear cadenas y agregar decimales.
sum_sales_dept.astype(str)
python
pandas
floating-point
scientific-notation
number-formatting
horatio1701d
fuente
fuente
dtypes
resultados?Respuestas:
De acuerdo, la respuesta que vinculé en los comentarios no es muy útil. Puede especificar su propio convertidor de cadena de esta manera.
No estoy seguro de si esa es la forma preferida de hacer esto, pero funciona.
La conversión de números a cadenas solo con fines estéticos parece una mala idea, pero si tiene una buena razón, esta es una forma:
fuente
pandas.option_context
(ver pandas.pydata.org/pandas-docs/stable/generated/… ).pd.set_option('display.float_format', lambda x: f'{x:,.3f}')
si también quieres un separador de mil.Aquí hay otra forma de hacerlo, similar a la respuesta de Dan Allan pero sin la función lambda:
o
fuente
Puede usar la función redonda solo para suprimir la notación científica para un marco de datos específico:
o puede suprimirlo globalmente:
fuente
Si desea aplicar un estilo a la salida de un marco de datos en una celda del cuaderno jupyter, puede establecer el estilo de visualización en función de cada marco de datos:
Vea la documentación aquí .
fuente
Si desea utilizar los valores, por ejemplo, como parte de csvfile csv.writer, los números se pueden formatear antes de crear una lista:
fuente