iT邦幫忙

2024 iThome 鐵人賽

DAY 12
0

今天我們來介紹格式化時間相關型別的函數,分別是:

  • 格式化日期(GT.fmt_date())。
  • 格式化時間(GT.fmt_time())。
  • 格式化日期與時間(GT.fmt_datetime())。

以下將繼續使用df_demo為範例說明:
df_demo

GT.fmt_date()

GT.fmt_date(self, columns=None, rows=None, date_style='iso', pattern='{x}', locale=None)

GT.fmt_date()可以接受下列三種輸入:

  • Python date 型別。
  • Pythondatetime 型別。
  • 「"YYYY-MM-DD HH:MM:SS"」或「"YYYY-MM-DD"」的ISO-8601型式。

date_style參數則可以讓我們指定格式化的型態,目前共有十七種可以挑選。舉例來說,我們可以設定date_style="wday_month_day_year"來格式化「"date"」欄位(Python date 型別):

(GT(df_demo).fmt_date("date", date_style="wday_month_day_year"))

fmt date 1

又或者先將「"date"」欄位轉換為ISO-8601型式後,再設定date_style="day_month_year"對其進行格式化:

(
    GT(df_demo.with_columns(pl.col("date").dt.strftime("%Y-%m-%d"))).fmt_date(
        "date", date_style="day_month_year"
    )
)

fmt date 2

GT.fmt_time()

GT.fmt_time(self, columns=None, rows=None, time_style='iso', pattern='{x}', locale=None)

GT.fmt_time()可以接受下列兩種輸入:

  • Python time 型別。
  • 「"YYYY-MM-DD HH:MM:SS"」或「"YYYY-MM-DD"」的ISO-8601型式。

time_style參數則可以讓我們指定格式化的型態,目前共有五種可以挑選。舉例來說,我們可以設定time_style="h_m_s_p""來格式化「"time"」欄位(Python time 型別):

(GT(df_demo).fmt_time("time", time_style="h_m_s_p"))

fmt time 1

又或者先將「"time"」欄位轉換為ISO-8601型式後,再設定time_style="h_m_p"對其進行格式化:

(
    GT(df_demo.with_columns(pl.col("time").dt.strftime("%H:%M:%S"))).fmt_time(
        "time", time_style="h_m_p"
    )
)

fmt time 2

GT.fmt_datetime()

GT.fmt_datetime(self, columns=None, rows=None, date_style='iso', time_style='iso', sep=' ', pattern='{x}', locale=None)

GT.fmt_datetime()可以接受下列兩種輸入:

  • Python datetime 型別。
  • 「"YYYY-MM-DD HH:MM:SS"」或「"YYYY-MM-DD"」的ISO-8601型式。

date_style的設定與GT.fmt_date()一樣,共有十七種;而time_style的設定與GT.fmt_time()一樣,共有五種。舉例來說,我們可以設定date_style="year.mn.day""time_style="iso"來格式化「"datetime"」欄位(Python datetime 型別):

(
    GT(df_demo).fmt_datetime(
        "datetime",
        date_style="year.mn.day",
        time_style="iso",
    )
)

fmt datetime 1

又或者先將「"datetime"」欄位轉換為ISO-8601型式後,再設定date_style="wd_m_day_year"time_style="iso-short"對其進行格式化:

(
    GT(
        df_demo.with_columns(
            pl.col("datetime").dt.strftime("%Y-%m-%d %H:%M:%S")
        )
    ).fmt_datetime(
        "datetime",
        date_style="wd_m_day_year",
        time_style="iso-short",
    )
)

fmt datetime 2

Polars selector

有時候DataFrame內會有著許多與時間有關的欄位,例如股票交易記錄。此時如果想要選到特定的時間型別進行格式化時,請別忘了Polars selector這個超好用的工具。

(GT(df_demo).fmt_date(cs.date(), date_style="m_day_year"))

fmt date cs

(GT(df_demo).fmt_time(cs.time(), time_style="h_m_p"))

fmt time cs

(GT(df_demo).fmt_datetime(cs.datetime()))

fmt datetime cs

Code

本日程式碼傳送門


上一篇
[Day11] - 格式化數字
下一篇
[Day13] - 格式化單位(Unit)
系列文
眾裏尋它:Python表格利器Great Tables30
圖片
  直播研討會
圖片
{{ item.channelVendor }} {{ item.webinarstarted }} |
{{ formatDate(item.duration) }}
直播中

尚未有邦友留言

立即登入留言