Es gibt einen Unterschied zwischen dem Inhalt einer Datenrahmenzelle (ein Binärwert) und ihrer Darstellung (Anzeige) für uns Menschen.
Wenn Sie das Jupyter-Notizbuch zum Anzeigen Ihres Datenrahmens verwenden oder ihn in Form einer HTML-Datei präsentieren möchten (mit vielen id
und class
Attributen für weiteres CSS-Styling, wenn Sie dies wünschen), können Sie das Styling verwenden .
Ich nehme an, dass Ihre Spalte DOB
bereits den Typ hatdatetime64
(Sie haben gezeigt, dass Sie wissen, wie Sie ihn erreichen können). Ich habe einen einfachen Datenrahmen (mit nur einer Spalte) vorbereitet, um Ihnen einige grundlegende Stile zu zeigen:
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
Achtung! Das zurückgebende Objekt ist KEIN Datenrahmen - es ist ein Objekt der Klasse. Weisen Sie es Styler
also nicht zurück zu df
:
Tu das nicht:
df = df.style.format({"DOB": lambda t: t.strftime("%m/%d/%Y")}) # Don´t do this!
(Auf jeden Datenrahmen kann über seine .style
Eigenschaft auf sein Styler-Objekt zugegriffen werden , und wir haben dieses df.style
Objekt geändert , nicht den Datenrahmen selbst.)
Warum zeigt Ihr Styler-Objekt (oder ein Ausdruck, der es zurückgibt), der als letzter Befehl in einer Jupyter-Notizbuchzelle verwendet wird, Ihre (gestaltete) Tabelle an und nicht das Styler-Objekt selbst?
Weil jedes Styler-Objekt über eine ._repr_html_()
Rückrufmethode verfügt, die einen HTML-Code zum Rendern Ihres Datenrahmens zurückgibt (als schöne HTML-Tabelle).
Jupyter Notebook IDE ruft diese Methode automatisch auf, um Objekte zu rendern, die sie haben.
Ein Styler-Objekt verfügt auch über eine Methode render()
, wenn Sie eine Zeichenfolge mit dem HTML-Code erhalten möchten (z. B. zum Veröffentlichen Ihres formatierten Datenrahmens im Web):
df_styler = df.style.format({"DOB": lambda t: t.strftime("%m/%d/%Y")})
HTML_string = df_styler.render()