C'è una differenza tra
- il contenuto di una cella del dataframe (un valore binario) e
- la sua presentazione (mostrandola) per noi umani.
Quindi la domanda è: come raggiungere la presentazione appropriata dei miei dati senza modificare i dati / i tipi di dati stessi?
Ecco la risposta:
- Se utilizzi il notebook Jupyter per visualizzare il tuo dataframe, o
- se vuoi raggiungere una presentazione sotto forma di un file HTML (anche con molti superflui preparati
id
e class
attributi per ulteriori stili CSS - puoi o non puoi usarli),
usa lo styling . Lo stile non modifica i dati / tipi di dati delle colonne del tuo dataframe.
Ora ti mostro come raggiungerlo nel taccuino Jupyter - per una presentazione sotto forma di file HTML vedi la nota vicino alla fine della domanda.
Suppongo che la tua colonna DOB
abbia già il tipodatetime64
(hai dimostrato di sapere come raggiungerlo). Ho preparato un semplice dataframe (con una sola colonna) per mostrarti alcuni stili di base:
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
Stai attento!
L'oggetto restituito NON è un dataframe - è un oggetto della classe Styler
, quindi non assegnarlo di nuovo a df
:
Non farlo:
df = df.style.format({"DOB": lambda t: t.strftime("%m/%d/%Y")}) # Don´t do this!
(Ogni dataframe ha il suo oggetto Styler accessibile dalla sua .style
proprietà e abbiamo modificato questo df.style
oggetto, non il dataframe stesso.)
Domande e risposte:
D: Perché il tuo oggetto Styler (o un'espressione che lo restituisce) utilizzato come ultimo comando in una cella del taccuino Jupyter visualizza la tua tabella (con stile) e non l'oggetto Styler stesso?
R: Perché ogni oggetto Styler ha un metodo di callback ._repr_html_()
che restituisce un codice HTML per il rendering del dataframe (come una bella tabella HTML).
Jupyter Notebook IDE chiama automaticamente questo metodo per eseguire il rendering degli oggetti che lo hanno.
Nota:
Non hai bisogno del notebook Jupyter per lo stile (cioè per un bel output di un dataframe senza cambiare i suoi dati / tipi di dati ).
Un oggetto Styler ha anche un metodo render()
, se vuoi ottenere una stringa con il codice HTML (ad es. Per pubblicare il tuo dataframe formattato sul Web, o semplicemente presentare la tua tabella in formato HTML):
df_styler = df.style.format({"DOB": lambda t: t.strftime("%m/%d/%Y")})
HTML_string = df_styler.render()