Jest różnica między
- zawartość komórki dataframe (wartość binarna) i
- jego prezentacja (wyświetlanie) dla nas, ludzi.
Pytanie brzmi: jak dojść do odpowiedniej prezentacji moich danych bez zmiany samych danych / typów danych?
Oto odpowiedź:
- Jeśli używasz notatnika Jupyter do wyświetlania ramki danych lub
- jeśli chcesz dotrzeć do prezentacji w postaci pliku HTML (nawet z wieloma przygotowanymi zbędnymi
id
i class
atrybutami do dalszego stylowania CSS - możesz ich użyć lub nie),
użyj stylizacji .Styl nie zmienia danych / typów danych kolumn ramki danych.
Teraz pokażę Ci, jak dotrzeć do tego w notatniku Jupyter - aby zapoznać się z prezentacją w postaci pliku HTML, zobacz notatkę pod koniec pytania.
Przypuszczam, że twoja kolumna DOB
ma już typdatetime64
(pokazałeś, że wiesz, jak do niego dotrzeć). Przygotowałem prostą ramkę danych (z tylko jedną kolumną), aby pokazać podstawowe style:
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
Bądź ostrożny!
Zwracający obiekt NIE jest ramką danych - jest to obiekt klasy Styler
, więc nie przypisuj go z powrotem do df
:
Nie rób tego:
df = df.style.format({"DOB": lambda t: t.strftime("%m/%d/%Y")}) # Don´t do this!
(Każda ramka danych ma swój obiekt Styler dostępny przez swoją .style
właściwość i zmieniliśmy ten df.style
obiekt, a nie samą ramkę danych).
Pytania i odpowiedzi:
P: Dlaczego twój obiekt Styler (lub wyrażenie zwracające go) użyty jako ostatnie polecenie w komórce notatnika Jupyter wyświetla twoją (ze stylem) tabelę , a nie sam obiekt Styler?
Odp .: Ponieważ każdy obiekt Styler ma metodę wywołania zwrotnego, ._repr_html_()
która zwraca kod HTML do renderowania ramki danych (jako ładnej tabeli HTML).
Jupyter Notebook IDE wywołuje tę metodę automatycznie, aby renderować obiekty, które ją zawierają.
Uwaga:
Nie potrzebujesz notatnika Jupyter do stylizacji (tj. Do ładnego drukowania ramki danych bez zmiany jej typów danych / danych ).
Obiekt Styler ma również metodę render()
, jeśli chcesz uzyskać ciąg znaków z kodem HTML (np. Do opublikowania sformatowanej ramki danych w Internecie lub po prostu zaprezentuj swoją tabelę w formacie HTML):
df_styler = df.style.format({"DOB": lambda t: t.strftime("%m/%d/%Y")})
HTML_string = df_styler.render()