Formatee/Suprima la notación científica de Python Pandas Agregación de resultados
floating-point scientific-notation (4)
Aquí hay otra forma de hacerlo, casi similar a la manera anterior:
pd.options.display.float_format = ''{:.2f}''.format
Series(np.random.randn(3))
¿Cómo se puede modificar el formato para el resultado 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 paso a cadena, pero ahora me pregunto cómo formatear cadenas y agregar decimales.
sum_sales_dept.astype(str)
De acuerdo, la respuesta que relacioné en los comentarios no es muy útil. Puede especificar su propio convertidor de cadenas como tal.
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 hacerlo, pero funciona.
Convertir números en cadenas puramente 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
Puede usar la función circular para suprimir la notación científica para un marco de datos específico:
df1.round(4)
o puede suprimir es globalmente por:
pd.options.display.float_format = ''{:.4f}''.format
Si desea utilizar los valores, por ejemplo, como parte de csvfile csv.writer, los números se pueden formatear antes de crear una lista:
df[''label''].apply(lambda x: ''%.17f'' % x).values.tolist()