Існує різниця між
- зміст з dataframe осередки (двійкове значення) і
- його презентація (показ її) для нас, людей.
Отже, питання: Як досягти відповідної презентації моїх даних без зміни самих даних / типів даних?
Ось відповідь:
- Якщо ви використовуєте ноутбук Юпітера для відображення свого фрейму даних, або
- якщо ви хочете отримати презентацію у вигляді HTML-файлу (навіть із багатьма підготовленими зайвими
id
та class
атрибутами для подальшого стилю CSS - ви можете або не можете їх використовувати),
використовувати стайлінг . Стилі не змінюють типи даних / типи даних стовпців вашого фрейму даних.
Тепер я показую, як досягти цього в зошиті Юпітера - для презентації у вигляді HTML-файлу дивіться примітку наприкінці запитання.
Я припускаю, що ваш стовпець DOB
вже має типdatetime64
(ви показали, що знаєте, як його досягти). Я підготував простий кадр даних (лише з одним стовпцем), щоб показати вам основні стилі:
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
Будь обережний!
Об'єкт, що повертається, НЕ є фреймом даних - це об’єкт класу Styler
, тому не призначайте його назад df
:
Не робіть цього:
df = df.style.format({"DOB": lambda t: t.strftime("%m/%d/%Y")}) # Don´t do this!
(Кожен фрейм даних має свій об'єкт Styler, доступний за його .style
властивістю. Ми змінили цей df.style
об'єкт, а не сам кадр даних.)
Питання та відповіді:
З: Чому ваш об’єкт Styler (або вираз, що повертає його), що використовується як остання команда в комірці ноутбука Юпітера, відображає вашу ( стильову ) таблицю , а не сам об’єкт Styler?
Відповідь: Оскільки кожен об'єкт Styler має метод зворотного виклику, ._repr_html_()
який повертає HTML-код для візуалізації вашої кадри даних (як хороша таблиця HTML).
IDE Jupyter Notebook викликає цей метод автоматично, щоб відобразити об'єкти, які в ньому є.
Примітка:
Вам не потрібен ноутбук Юпітера для стилізації (тобто для гарного виведення фрейму даних без зміни його типів даних / даних ).
Об'єкт Styler також має метод render()
, якщо ви хочете отримати рядок з кодом HTML (наприклад, для публікації свого відформатованого фрейму даних в Інтернеті або просто представити свою таблицю у форматі HTML):
df_styler = df.style.format({"DOB": lambda t: t.strftime("%m/%d/%Y")})
HTML_string = df_styler.render()