【问题标题】:Subtracting datetime UTC and datetime not UTC减去 datetime UTC 和 datetime not UTC
【发布时间】:2020-02-14 19:45:42
【问题描述】:

我试图从我的数据框中减去一个datetime64[ns, UTC] 列与datetime64[ns]。我相信我应该规范化其中一列,然后减去(应该将 UTC 添加到 datetime64[ns] 列或将 UTC 减去 datetime64[ns, UTC] 以便之后我可以减去它们)。

df
estimated_delivery_time_local                  time_check
          2020-01-22 23:48:52   2020-01-22 23:48:52+00:00
          2020-01-23 00:45:05   2020-01-23 00:45:05+00:00
          2020-01-23 03:31:38   2020-01-23 03:31:38+00:00
          2020-01-23 00:19:06   2020-01-23 00:19:06+00:00

我想减去这两个列,以检查是否所有值都等于零

【问题讨论】:

  • 您认为estimated_delivery_time 的时区是什么?

标签: python pandas date datetime


【解决方案1】:

您可以首先删除本地时间戳:

df['time_check'] = df['time_check'].dt.tz_localize(None)

之后您可以执行使用np.where() 来比较列的行是否相等。

df['quality_check'] = np.where(df['estimated_delivery_time_local'] == df['time_check'],0,1)

这将为不匹配的行返回 1,为匹配的行返回 0。您可以非常快速地过滤不匹配的行,或者执行df['quality_check'].sum() 以了解不匹配的行数。

【讨论】:

    【解决方案2】:

    我不知道我的回答是否符合您的问题,但假设您的输入数据是这样的字符串格式:

    df=pd.DataFrame({'estimated_delivery_time_local':['2020-01-22 23:48:52','2020-01-23 00:45:05','2020-01-23 03:31:38','2020-01-23 00:19:06'],'time_check':['2020-01-22 23:48:52+00:00','2020-01-23 00:45:05+00:00','2020-01-23 03:31:38+00:00','2020-01-23 00:19:06+00:00']})
    

    那么如果你用这样的标准化日期时间格式制作两列:

    import datetime from datetime
    
    df['time_check']=[datetime.strptime(x,'%Y-%m-%d %H:%M:%S+00:00') for x in  df['time_check']]
    
    df['estimated_delivery_time_local']=[datetime.strptime(x,'%Y-%m-%d %H:%M:%S') for x in df['estimated_delivery_time_local']]
    

    在这种情况下,您应该比较两列或两个时间戳并检查它们是否相同

    df['estimated_delivery_time_local']-df['time_check']
    

    【讨论】:

      猜你喜欢
      • 2016-08-29
      • 2013-06-08
      • 1970-01-01
      • 1970-01-01
      • 2010-10-17
      • 2012-06-11
      • 2021-11-24
      • 2012-12-05
      • 2011-09-29
      相关资源
      最近更新 更多