Polars Dataframe:字符串列的日期转换

问题描述 投票:0回答:1

我正在尝试将 DataFrame 中的

str
列转换为
YYYY-MM-DD
的日期格式。如何将不同的日期格式转换为
YYYY-MM-DD
的一种格式?

s = pl.Series("date",["Sun Jul  8 00:34:60 2001", "12Mar2022", "12/Mar/2022"])

df = s.to_frame().with_columns(pl.col("date").str.to_date("%d%m%Y", strict=False)) 
shape: (3, 1)
┌──────┐
│ date │
│ ---  │
│ date │
╞══════╡
│ null │
│ null │
│ null │
└──────┘
python date-format python-polars date-conversion
1个回答
4
投票

您可以使用

pl.coalesce
将每次格式化尝试“合并”为一个结果。

s = pl.Series("date",[
   "Sun Jul 8 00:34:60 2001", 
   "12Mar2022", 
   "12/Mar/2022"
])

fmts = "%d/%b/%Y", "%d%b%Y", "%c"

pl.select(
   pl.coalesce(
      s.str.strptime(pl.Datetime, fmt=fmt, strict=False)
      for fmt in fmts
   )
)
shape: (3, 1)
┌─────────────────────┐
│ date                │
│ ---                 │
│ datetime[μs]        │
╞═════════════════════╡
│ 2001-07-08 00:35:00 │
│ 2022-03-12 00:00:00 │
│ 2022-03-12 00:00:00 │
└─────────────────────┘
© www.soinside.com 2019 - 2024. All rights reserved.