Есть разница между
- содержание из dataframe ячейки (двоичное значение) и
- его представление (отображение) для нас, людей.
Возникает вопрос: как достичь надлежащего представления моих данных без изменения самих данных / типов данных?
Вот ответ:
- Если вы используете записную книжку Jupyter для отображения фрейма данных, или
- если вы хотите получить презентацию в виде файла HTML (даже с большим количеством подготовленных лишних атрибутов
id
и class
атрибутов для дальнейшего моделирования CSS - вы можете или не можете их использовать),
использовать укладку . Стилизация не меняет данные / типы данных столбцов вашего фрейма данных.
Теперь я покажу вам, как добраться до него в записной книжке Jupyter - для презентации в виде файла 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 (или возвращающее его выражение), используемый в качестве последней команды в ячейке записной книжки Jupyter, отображает вашу (стилизованную) таблицу , а не сам объект Styler?
A: Потому что каждый объект Styler имеет метод обратного вызова, ._repr_html_()
который возвращает HTML-код для рендеринга вашего фрейма данных (в виде красивой HTML-таблицы).
Jupyter Notebook IDE автоматически вызывает этот метод для визуализации объектов, в которых он есть.
Примечание:
Записная книжка Jupyter не нужна для стилизации (т.е. для хорошего вывода фрейма данных без изменения его данных / типов данных ).
У объекта Styler также есть метод render()
, если вы хотите получить строку с кодом HTML (например, для публикации вашего отформатированного фрейма данных в Интернете или просто представить вашу таблицу в формате HTML):
df_styler = df.style.format({"DOB": lambda t: t.strftime("%m/%d/%Y")})
HTML_string = df_styler.render()