【问题标题】:pandas.to_datetime with different length date stringspandas.to_datetime 具有不同长度的日期字符串
【发布时间】:2019-02-27 17:53:37
【问题描述】:

我有一列时间戳,我想在我的 pandas 数据框中转换为日期时间。日期格式为%Y-%m-%d-%H-%M-%Spd.to_datetime 无法识别。我手动输入的格式如下:

df['TIME'] = pd.to_datetime(df['TIME'], format = '%Y-%m-%d-%H-%M-%S')

我的问题是有些时候没有秒,所以它们更短
(format = %Y-%m-%d-%H-%M)。

如何将所有这些字符串都转换为日期时间?

我在想我可以在较短的日期结束时添加零秒 (-0),但我不知道该怎么做。

【问题讨论】:

    标签: python pandas datetime string-to-datetime


    【解决方案1】:

    尝试 strftime,如果您想要正确的格式,并且如果 Pandas 无法识别您的自定义日期时间格式,您应该明确提供它

    from functools import partial
    
    df1 = pd.DataFrame({'Date': ['2018-07-02-06-05-23','2018-07-02-06-05']})
    newdatetime_fmt = partial(pd.to_datetime, format='%Y-%m-%d-%H-%M-%S')
    df1['Clean_Date'] = (df1.Date.str.replace('-','').apply(lambda x: pd.to_datetime(x).strftime('%Y-%m-%d-%H-%M-%S'))
                                                     .apply(newdatetime_fmt))
    
    print(df1,df1.dtypes)
    

    输出:

                  Date          Clean_Date
    0  2018-07-02-06-05-23 2018-07-02 06:05:23
    1     2018-07-02-06-05 2018-07-02 06:05:00 
    Date                  object
    Clean_Date    datetime64[ns]
    

    【讨论】:

    • 日期时间在一列中,带有连字符格式(即 2018-1-1-0-49-32),有些没有秒数(即 2018-1-1-0-49) .我希望它们被识别为日期时间对象,以便我可以按日期和时间排序。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2019-12-13
    • 2014-10-16
    • 1970-01-01
    • 2012-12-23
    • 2019-06-25
    • 1970-01-01
    相关资源
    最近更新 更多