【问题标题】:My time data "does not match format". How to properly format my datetime?我的时间数据“与格式不匹配”​​。如何正确格式化我的日期时间?
【发布时间】:2020-02-19 17:45:55
【问题描述】:

我正在使用 pandas 数据框,我希望在其中将一列格式化为日期时间对象。 “对象”字符串如下所示:2009-01-01T00:00:01+02:00

我尝试使用to_datetime(dataset["Datetime"], format = "%Y/%m/%d T %H:%M:%S %z") 格式化列

dataset = pd.read_csv('data.csv', sep = ";", header = "infer")
dataset["Datetime"] = pd.to_datetime(dataset["Datetime"], format = "%Y/%m/%d T %H:%M:%S %z")

我希望将列转换为日期时间对象,但我收到一条错误消息:

"ValueError: 时间数据'2009-01-01T00:00:01+02:00' 与格式'%Y/%m/%d T %H:%M:%S %z' 不匹配"

【问题讨论】:

    标签: python pandas datetime to-date


    【解决方案1】:

    如果可能,请仅使用 to_datetime 而不使用 format 参数:

    dataset = pd.DataFrame({
             'Datetime':['2009-01-01T00:00:01+02:00','2009-01-01T00:00:01+02:00'],
    })
    
    dataset["Datetime"] = pd.to_datetime(dataset["Datetime"])
    

    如果要指定格式也可以,删除空格并将/更改为-

    dataset["Datetime"] = pd.to_datetime(dataset["Datetime"], format = "%Y-%m-%dT%H:%M:%S%z")
    print (dataset)
    
                       Datetime
    0 2009-01-01 00:00:01+02:00
    1 2009-01-01 00:00:01+02:00
    

    【讨论】:

    • 感谢您的回复。仅使用dataset["sampling_time"] = pd.to_datetime(dataset["sampling_time"]) 会产生错误:ValueError: ('Unknown string format:', '\ufeff2009-01-02T08:53:00+02:00'),在添加您提供的“格式”时,我收到此错误消息:ValueError:时间数据“\ufeff2009-01-02T08:53:00+02:00”与格式“%Y-%m-%dT%H:%M:%S%z”不匹配(匹配)
    • @Zygos - 你的熊猫版本是什么?我认为如果升级到最后一个问题应该得到解决。
    • 我使用了 3.6,但尝试了 3.7 并且成功了!再次感谢。一个问题;如果我需要使用 tensorflow 和 Keras 等 API 怎么办?据我所知,它们与 3.7 尚不兼容
    • @Zygos - 我说的是 pandas,不是 python ;) Python 应该是 3,但是 pandas 0.25.2
    • 好吧,这很奇怪。在 Python 3.7 上我有 pandas 版本 0.24.2,而在 Python 3.6 上我有 pandas 版本 0.25.2。然而,这只适用于我的 Python 3.7 环境。
    猜你喜欢
    • 1970-01-01
    • 2022-06-10
    • 1970-01-01
    • 2022-08-19
    • 2019-07-08
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2015-08-25
    相关资源
    最近更新 更多