Có sự khác biệt giữa
- các nội dung của một tế bào dataframe (một giá trị nhị phân) và
- sự trình bày của nó (hiển thị nó) cho chúng ta, con người.
Vì vậy, câu hỏi đặt ra là: Làm thế nào để đạt được bản trình bày thích hợp của dữ liệu của tôi mà không thay đổi dữ liệu / kiểu dữ liệu?
Đây là câu trả lời:
- Nếu bạn sử dụng sổ ghi chép Jupyter để hiển thị khung dữ liệu của mình, hoặc
- nếu bạn muốn tiếp cận một bài thuyết trình dưới dạng một tập tin HTML (ngay cả với nhiều chuẩn bị cần thiết
id
vàclass
thuộc tính để tạo kiểu CSS hơn nữa - bạn có thể hoặc không thể sử dụng chúng),
sử dụng tạo kiểu . Việc tạo kiểu không thay đổi dữ liệu / kiểu dữ liệu của các cột trong khung dữ liệu của bạn.
Bây giờ tôi chỉ cho bạn cách tiếp cận nó trong sổ ghi chép Jupyter - đối với bản trình bày dưới dạng tệp HTML, hãy xem ghi chú ở gần cuối câu hỏi.
Tôi sẽ giả sử rằng cột của bạn DOB
đã có loạidatetime64
(bạn cho thấy rằng bạn biết cách tiếp cận nó). Tôi đã chuẩn bị một khung dữ liệu đơn giản (chỉ có một cột) để hiển thị cho bạn một số kiểu cơ bản:
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
Hãy cẩn thận!
Đối tượng trả về KHÔNG phải là khung dữ liệu - nó là một đối tượng của lớp Styler
, vì vậy đừng gán nó lại cho df
:
Đừng làm điều này:
df = df.style.format({"DOB": lambda t: t.strftime("%m/%d/%Y")}) # Don´t do this!
(Mỗi khung dữ liệu đều có đối tượng Styler có thể truy cập được bằng thuộc tính của nó .style
và chúng tôi đã thay đổi df.style
đối tượng này , không phải chính khung dữ liệu.)
Câu hỏi và trả lời:
H: Tại sao đối tượng Styler của bạn (hoặc một biểu thức trả lại nó) được sử dụng làm lệnh cuối cùng trong ô sổ ghi chép Jupyter hiển thị bảng (được tạo kiểu) của bạn , chứ không phải chính đối tượng Styler?
A: Bởi vì mọi đối tượng Styler đều có một phương thức gọi lại ._repr_html_()
trả về mã HTML để hiển thị khung dữ liệu của bạn (dưới dạng một bảng HTML đẹp).
Jupyter Notebook IDE tự động gọi phương thức này để hiển thị các đối tượng có nó.
Ghi chú:
Bạn không cần sổ ghi chép Jupyter để tạo kiểu (tức là để tạo khung dữ liệu đẹp mắt mà không thay đổi dữ liệu / kiểu dữ liệu của nó ).
Đối tượng Styler cũng có một phương thức render()
, nếu bạn muốn lấy một chuỗi có mã HTML (ví dụ: để xuất bản khung dữ liệu được định dạng của bạn lên Web hoặc chỉ cần trình bày bảng của bạn ở định dạng HTML):
df_styler = df.style.format({"DOB": lambda t: t.strftime("%m/%d/%Y")})
HTML_string = df_styler.render()