Formatear/suprimir la notación científica de los resultados de agregación de Pandas

Resuelto horatio1701d asked hace 10 años • 8 respuestas

¿Cómo se puede modificar el formato de 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 no sé cómo 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)
horatio1701d avatar Jan 15 '14 19:01 horatio1701d
Aceptado

Por supuesto, la respuesta que vinculé en los comentarios no es muy útil. Puede especificar su propio convertidor de cadenas de esta manera.

In [25]: pd.set_option('display.float_format', lambda x: '%.3f' % x)

In [28]: Series(np.random.randn(3))*1000000000
Out[28]: 
0    -757322420.605
1   -1436160588.997
2   -1235116117.064
dtype: float64

No estoy seguro de si esa es la forma preferida de hacer esto, pero funciona.

Convertir números en cadenas únicamente con fines estéticos parece una mala idea, pero si tiene una buena razón, esta es una forma:

In [6]: Series(np.random.randn(3)).apply(lambda x: '%.3f' % x)
Out[6]: 
0     0.026
1    -0.482
2    -0.694
dtype: object
Dan Allan avatar Jan 15 '2014 14:01 Dan Allan

Aquí hay otra forma de hacerlo, similar a la respuesta de Dan Allan pero sin la función lambda:

>>> pd.options.display.float_format = '{:.2f}'.format
>>> Series(np.random.randn(3))
0    0.41
1    0.99
2    0.10

o

>>> pd.set_option('display.float_format', '{:.2f}'.format)
tfhans avatar Oct 10 '2017 17:10 tfhans

Puede usar la función redonda solo para suprimir la notación científica para un marco de datos específico:

df1.round(4)

o puedes suprimirlo globalmente mediante:

pd.options.display.float_format = '{:.4f}'.format
Vlad Bezden avatar Jan 23 '2018 14:01 Vlad Bezden

Si desea aplicar estilo a la salida de un marco de datos en una celda de Jupyter Notebook, puede configurar el estilo de visualización por marco de datos:

df = pd.DataFrame({'A': np.random.randn(4)*1e7})
df.style.format("{:.1f}")

ingrese la descripción de la imagen aquí

Consulte la documentación aquí .

florestan avatar Jun 18 '2019 11:06 florestan