【问题标题】:String to DateTime in Python Correct Format errorPython正确格式错误中的字符串到日期时间
【发布时间】:2021-10-27 14:13:02
【问题描述】:

我知道这个问题很多,但我找不到适合我的情况的解决方案。我有一个 DataFrame,其中包含一个字符串格式的 Time 列,我需要将其转换为 datetime。最终,我希望将日期作为 int 用于 ML 目的,但我似乎无法先将其设为 datetime。

我有:

testDate = tripOrig[' Time'][0]
newDate = dt.datetime.strptime(testDate,'%d-%b-%Y %H:%M:%S.%f %Z')

日期是这样的字符串:

05-Jun-2016 00:00:00.000 EDT

无论出于何种原因,我不断收到格式错误的错误消息。我一生都无法弄清楚我做错了什么。我多次检查日期时间文档,但我不断收到:

ValueError: time data '05-Jun-2016 00:00:00.000 EDT' does not match format '%d-%b-%Y %H:%M:%S.%f %Z'

我在这里错过了什么?!?

另外,我也尝试过:

tripOrig['correct date'] = pd.to_datetime(tripOrig[' Time'])

这很慢,会抛出时区警告,并且转换为 int 时不考虑秒数,所以我无法使用它。

如何转换?

【问题讨论】:

标签: python datetime


【解决方案1】:

使用其他几个问题,我找到了我的解决方案:

Parser must be a string or character stream, not Series

how to convert a string datetime with unknown timezone to timestamp in python

从字符串到 Posix/Unix int:

import datetime as dt
from time import mktime
from dateutil import parser

def timeCorrect(stringDate):
    stamp = parser.parse(stringDate, tzinfos={"EDT": -4 * 3600})
    work = mktime(stamp.timetuple())
    return work
        
tripOrig['Correct Time'] =  tripOrig[' Time'].apply(timeCorrect) 

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2020-05-29
    • 2013-06-03
    • 1970-01-01
    • 2018-10-02
    • 1970-01-01
    • 2017-05-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多