您差不多了,只是忘记了您的格式说明符中的秒组件:
(
df
.with_column(
pl.col('EventTime')
.str.strptime(pl.Datetime,
fmt="%Y-%m-%dT%H:%M:%S%.f",
strict=False)
.alias('parsed EventTime')
)
)
shape: (1, 2)
┌─────────────────────────┬─────────────────────────┐
│ EventTime ┆ parsed EventTime │
│
│ str ┆ datetime[ns] │
╞═════════════════════════╪═════════════════════════╡
│ 2020-03-02T13:10:42.550 ┆ 2020-03-02 13:10:42.550 │
└─────────────────────────┴─────────────────────────┘
顺便说一下,你使用的格式是标准的,所以你可以完全省略格式说明符。
(
df
.with_column(
pl.col('EventTime')
.str.strptime(pl.Datetime,
strict=False)
.alias('parsed EventTime')
)
)
shape: (1, 2)
┌─────────────────────────┬─────────────────────────┐
│ EventTime ┆ parsed EventTime │
│
│ str ┆ datetime[μs] │
╞═════════════════════════╪═════════════════════════╡
│ 2020-03-02T13:10:42.550 ┆ 2020-03-02 13:10:42.550 │
└─────────────────────────┴─────────────────────────┘
编辑
如果我想忽略毫秒怎么办?因此,如果我只是省略"%.f",它无法正确解释数据框。
我们需要允许 Polars 根据字符串的实际格式解析日期字符串。
也就是说,在解析后,我们可以使用dt.truncate
来去除小数部分。
(
df
.with_column(
pl.col('EventTime')
.str.strptime(pl.Datetime,
strict=False)
.dt.truncate('1s')
.alias('parsed EventTime')
)
)
shape: (1, 2)
┌─────────────────────────┬─────────────────────┐
│ EventTime ┆ parsed EventTime │
│
│ str ┆ datetime[μs] │
╞═════════════════════════╪═════════════════════╡
│ 2020-03-02T13:10:42.550 ┆ 2020-03-02 13:10:42 │
└─────────────────────────┴─────────────────────┘
%.f
**,而不是在原生的 Python 中使用的.%f
。 - FObersteiner