【问题标题】:Issue while converting string to DateTime in Polars在 Polars 中将字符串转换为 DateTime 时出现问题
【发布时间】:2022-11-11 00:28:14
【问题描述】:

我正在将字符串列转换为日期时间列...

这是我的输入,

col
00000001011970
00000001011970
00000001011970
...
00000001011970

这是我的sn-p,

df[col].with_column= df.with_column(pl.col(col).str.strptime(pl.Datetime, fmt='%Y-%m-%d %H:%M:%S',strict=False).alias('parsed EventTime') )
            

上面的 sn-p 没有转换为 DateTime ... 输出与输入相同...输出没有变化。

请帮助我将字符串列转换为极坐标中的 DateTime。

【问题讨论】:

  • 如果您将日期/时间表示为00000001011970,我不希望fmt='%Y-%m-%d %H:%M:%S' 产生正确的结果

标签: python dataframe datetime python-polars


【解决方案1】:

您的格式子句应与输入匹配。

df.with_column(pl.col('col').str.strptime(pl.Datetime, fmt='%S%M%H%d%m%Y',strict=False).alias('parsed EventTime'))

给我

1970-01-01 00:00:00

【讨论】:

  • df[col].with_column= df.with_column(pl.col(col).str.strptime(pl.Datetime, fmt='%S%M%H%d%m%Y',strict=False).alias( 'parsed EventTime')),我已经执行但它没有转换
【解决方案2】:

要在您的评论上下文中添加 4pi 的答案...

polars 不是 pandas,因此您不要为现有 dfs 的列分配 df['col']=

您可以像这样使用替换整个 df 的语法

df = df.with_column(pl.col('col').str.strptime(pl.Datetime, fmt='%S%M%H%d%m%Y',strict=False).alias('parsed EventTime'))

polarsAFAIK 足够聪明,不会在您这样做时复制任何内容,因此尽管语法暗示它效率低下,但它是有效的。

如果要替换列,则可以使用replace 方法,即。

df.replace('col',df.get_column('col').str.strptime(pl.Datetime, fmt='%S%M%H%d%m%Y',strict=False))

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2021-12-05
    • 2020-03-17
    • 1970-01-01
    • 1970-01-01
    • 2023-02-09
    • 2022-01-08
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多