Hay una diferencia entre
- el contenido de una celda de marco de datos (un valor binario) y
- su presentación (mostrándola) para nosotros, los humanos.
Entonces, la pregunta es: ¿Cómo lograr la presentación adecuada de mis datos sin cambiar los datos / tipos de datos en sí mismos?
Esta es la respuesta:
- Si usa el cuaderno Jupyter para mostrar su marco de datos, o
- si se quiere llegar a una presentación en forma de un archivo HTML (incluso con muchos preparados superflua
id
y class
atributos para más estilo CSS - que puede o no puede usarlos),
usar estilo . El estilo no cambia los datos / tipos de datos de las columnas de su marco de datos.
Ahora le muestro cómo llegar a él en el cuaderno de Jupyter; para una presentación en forma de archivo HTML, vea la nota cerca del final de la pregunta.
Supongo que tu columna DOB
ya tiene el tipodatetime64
(has demostrado que sabes cómo llegar). Preparé un marco de datos simple (con solo una columna) para mostrarte algunos estilos básicos:
DOB
0 2019-07-03
1 2019-08-03
2 2019-09-03
3 2019-10-03
DOB
0 07/03/2019
1 08/03/2019
2 09/03/2019
3 10/03/2019
DOB
0 03-07-2019
1 03-08-2019
2 03-09-2019
3 03-10-2019
¡Ten cuidado!
El objeto que regresa NO es un marco de datos, es un objeto de la clase Styler
, así que no lo asigne de nuevo a df
:
No hagas esto:
df = df.style.format({"DOB": lambda t: t.strftime("%m/%d/%Y")}) # Don´t do this!
(Cada marco de datos tiene su objeto Styler accesible por su .style
propiedad, y cambiamos este df.style
objeto, no el marco de datos en sí).
Preguntas y respuestas:
P: ¿Por qué su objeto Styler (o una expresión que lo devuelve) utilizado como último comando en una celda de cuaderno de Jupyter muestra su tabla (con estilo) y no el objeto Styler en sí?
R: Porque cada objeto Styler tiene un método de devolución de llamada ._repr_html_()
que devuelve un código HTML para representar su marco de datos (como una bonita tabla HTML).
Jupyter Notebook IDE llama a este método automáticamente para representar los objetos que lo tienen.
Nota:
No necesita el cuaderno Jupyter para diseñar (es decir, para generar una buena salida de un marco de datos sin cambiar sus datos / tipos de datos ).
Un objeto Styler también tiene un método render()
, si desea obtener una cadena con el código HTML (por ejemplo, para publicar su marco de datos formateado en la Web, o simplemente presentar su tabla en formato HTML):
df_styler = df.style.format({"DOB": lambda t: t.strftime("%m/%d/%Y")})
HTML_string = df_styler.render()