【问题标题】:strptime - ValueError: time data '02/08/18 10:47:43,907000000' does not match format '%d/%m/%Y %H:%M:%S,%f'strptime - ValueError:时间数据 '02/08/18 10:47:43,907000000' 与格式 '%d/%m/%Y %H:%M:%S,%f' 不匹配
【发布时间】:2021-02-03 15:27:36
【问题描述】:

我将时间数据作为字符串存储在我的 pandas 数据框中,并希望将其转换为日期时间。一个条目如下所示:

02/08/18 10:47:43,907000000

我使用此代码来完成它:

df['Datetime'] = df['TIME'].apply(lambda x: datetime.strptime(x, "%d/%m/%Y %H:%M:%S,%f"))

但我收到此错误:

ValueError: time data '02/08/18 10:47:43,907000000' does not match format '%d/%m/%Y %H:%M:%S,%f'

如何修改我的代码?

非常感谢!

【问题讨论】:

    标签: python pandas datetime error-handling


    【解决方案1】:

    您的年份格式化程序应为小写 (%y),而不是大写 (%Y)。

    给予:

    '%d/%m/%y %H:%M:%S,%f'

    【讨论】:

    • 是的,它似乎工作得更好,但我现在收到此错误:ValueError: unconverted data remains: 000
    • 微秒只有 6 位数长。所以最后三个零不会被转换。
    【解决方案2】:

    除了格式错误%Y vs %y,使用pd.to_datetime而不是apply

    df['Datetime'] = pd.to_datetime(df['TIME'], format="%d/%m/%y %H:%M:%S,%f")
    

    您也可以让 Pandas 为您猜测格式(可能会更慢):

    df['Datetime'] = pd.to_datetime(df['TIME'])
    

    【讨论】:

    • 是的,结果正确!非常感谢! :-)
    猜你喜欢
    • 1970-01-01
    • 2016-10-15
    • 1970-01-01
    • 2021-10-11
    • 2017-06-04
    • 1970-01-01
    • 2022-01-20
    • 2018-12-30
    • 1970-01-01
    相关资源
    最近更新 更多