Ada perbedaan antara
- yang isi dari sel dataframe (nilai biner) dan
- nya presentasi (menampilkan itu) bagi kita, manusia.
Jadi pertanyaannya adalah: Bagaimana cara mencapai presentasi yang sesuai dari data saya tanpa mengubah data / tipe datanya sendiri?
Inilah jawabannya:
- Jika Anda menggunakan notebook Jupyter untuk menampilkan dataframe, atau
- jika Anda ingin mencapai presentasi dalam bentuk file HTML (bahkan dengan banyak atribut
id
dan berlebihan yang disiapkan class
untuk gaya CSS lebih lanjut - Anda mungkin atau tidak dapat menggunakannya),
gunakan gaya . Styling tidak mengubah data / tipe data kolom dari dataframe Anda.
Sekarang saya tunjukkan cara menjangkaunya di notebook Jupyter - untuk presentasi dalam bentuk file HTML lihat catatan di dekat akhir pertanyaan.
Saya anggap kolom Anda DOB
sudah memiliki tipedatetime64
(Anda telah menunjukkan bahwa Anda tahu cara mencapainya). Saya menyiapkan kerangka data sederhana (dengan hanya satu kolom) untuk menunjukkan beberapa gaya dasar:
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
Hati-hati!
Objek yang dikembalikan BUKAN kerangka data - ini adalah objek kelas Styler
, jadi jangan tetapkan kembali ke df
:
Jangan lakukan ini:
df = df.style.format({"DOB": lambda t: t.strftime("%m/%d/%Y")}) # Don´t do this!
(Setiap kerangka data memiliki objek Styler yang dapat diakses oleh .style
propertinya, dan kami mengubah df.style
objek ini , bukan kerangka data itu sendiri.)
Pertanyaan dan jawaban:
T: Mengapa objek Styler Anda (atau ekspresi yang mengembalikannya) digunakan sebagai perintah terakhir di sel notebook Jupyter menampilkan tabel (bergaya) Anda , dan bukan objek Styler itu sendiri?
J: Karena setiap objek Styler memiliki metode callback ._repr_html_()
yang mengembalikan kode HTML untuk merender dataframe Anda (sebagai tabel HTML yang bagus).
Jupyter Notebook IDE memanggil metode ini secara otomatis untuk merender objek yang memilikinya.
catatan:
Anda tidak memerlukan notebook Jupyter untuk penggayaan (yaitu untuk menghasilkan dataframe yang bagus tanpa mengubah tipe data / datanya ).
Objek Styler juga memiliki metode render()
, jika Anda ingin mendapatkan string dengan kode HTML (misalnya untuk menerbitkan kerangka data Anda yang telah diformat ke Web, atau cukup menyajikan tabel Anda dalam format HTML):
df_styler = df.style.format({"DOB": lambda t: t.strftime("%m/%d/%Y")})
HTML_string = df_styler.render()