【问题标题】:Unable to get time difference between to pandas dataframe columns无法获得熊猫数据框列之间的时间差
【发布时间】:2020-05-31 22:00:50
【问题描述】:

我有一个包含几列的 pandas 数据框。其中两个是 start_time 和 end_time。在这些列中,值看起来像 - 2020-01-04 01:38:33 +0000 UTC

我无法从这些字符串创建日期时间对象,因为我无法正确获取格式 -

df['start_time'] = pd.to_datetime(df['start_time'], format="yyyy-MM-dd HH:mm:ss +0000 UTC")

我也尝试使用 yyyy-MM-dd HH:mm:ss %z UTC 作为格式

这给出了错误 -

ValueError: time data '2020-01-04 01:38:33 +0000 UTC' does not match format 'yyyy-MM-dd HH:mm:ss +0000 UTC' (match)

【问题讨论】:

    标签: python pandas datetime


    【解决方案1】:

    下面有一些关于这个问题的注释:

    1.关于您的错误

    这给出了错误 -

    您解析了错误的日期时间格式,这将导致错误。对于正确的格式检查这个https://strftime.org/。此问题的正确格式为:"%Y-%m-%d %H:%M:%S %z UTC"

    2。 Pandas 时区限制

    将 UTC 时区解析为 %z 不适用于 pd.Series(它仅适用于索引值)。所以如果你使用它,它将不起作用

    df['startTime'] = pd.to_datetime(df.startTime, format="%Y-%m-%d %H:%M:%S %z UTC", utc=True)
    

    解决方案为此使用 python 内置库来推断日期时间数据:

    from datetime import datetime
    f = lambda x: datetime.strptime(x, "%Y-%m-%d %H:%M:%S %z UTC")
    df['startTime'] = pd.to_datetime(df.startTime.apply(f), utc=True)
    

    @fmarm 回答仅帮助您处理日期和小时数据,而不是 UTC 时区。

    【讨论】:

      【解决方案2】:

      您只需要使用to_datetime 可以识别的正确时间戳格式

      df['start_time'] = pd.to_datetime(df['start_time'], format="%Y-%m-%d %H:%M:%S +0000 UTC")
      

      【讨论】:

        猜你喜欢
        • 2013-06-23
        • 2021-11-15
        • 2018-04-18
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2016-01-20
        • 1970-01-01
        • 2020-09-01
        相关资源
        最近更新 更多