Saltar al contenido

Formatee ciertas columnas de marcos de datos flotantes en porcentaje en pandas

Solución:

La respuesta aceptada sugiere modificar los datos sin procesar con fines de presentación, algo que generalmente no desea. Imagine que necesita realizar más análisis con estas columnas y necesita la precisión que perdió con el redondeo.

Puede modificar el formato de columnas individuales en marcos de datos, en su caso:

output = df.to_string(formatters={
    'var1': '{:,.2f}'.format,
    'var2': '{:,.2f}'.format,
    'var3': '{:,.2%}'.format
})
print(output)

Para tu información '{:,.2%}'.format(0.214) rendimientos 21.40%, por lo que no es necesario multiplicar por 100.

Ya no tienes una buena tabla HTML sino una representación de texto. Si necesita permanecer con HTML, use el to_html función en su lugar.

from IPython.core.display import display, HTML
output = df.to_html(formatters={
    'var1': '{:,.2f}'.format,
    'var2': '{:,.2f}'.format,
    'var3': '{:,.2%}'.format
})
display(HTML(output))

Actualizar

A partir de pandas 0.17.1, la vida se hizo más fácil y podemos obtener una hermosa tabla html de inmediato:

df.style.format({
    'var1': '{:,.2f}'.format,
    'var2': '{:,.2f}'.format,
    'var3': '{:,.2%}'.format,
})

También puede establecer el formato predeterminado para float:

pd.options.display.float_format="{:.2%}".format

Use ‘{: .2%}’ en lugar de ‘{: .2f}%’ – El primero convierte 0.41 a 41.00% (correctamente), el segundo a 0.41% (incorrectamente)

reemplace los valores usando la función de redondeo y formatee la representación de cadena de los números de porcentaje:

df['var2'] = pd.Series([round(val, 2) for val in df['var2']], index = df.index)
df['var3'] = pd.Series(["{0:.2f}%".format(val * 100) for val in df['var3']], index = df.index)

La función round redondea un número de coma flotante al número de lugares decimales proporcionados como segundo argumento de la función.

El formato de cadena le permite representar los números como desee. Puede cambiar el número de posiciones decimales que se muestran cambiando el número antes del f.

PD No estaba seguro de si sus números de ‘porcentaje’ ya se habían multiplicado por 100. Si lo han hecho, entonces claramente querrá cambiar el número de decimales que se muestran y eliminar la multiplicación de cien.

¡Haz clic para puntuar esta entrada!
(Votos: 0 Promedio: 0)



Utiliza Nuestro Buscador

Deja una respuesta

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *