【问题标题】:Calculating time difference - TypeError: Cannot compare type 'Timestamp' with type 'int'计算时间差 - TypeError:无法将类型“时间戳”与“int”类型进行比较
【发布时间】:2018-06-14 18:48:14
【问题描述】:

所以,我想通过获取两个日期时间列之间的差异来创建一个名为 df["Diff"] 的新列。因此,我的代码是:

df["Diff"] = df["Time"] - df_target["Time"]

当我运行此代码时,我收到以下错误消息:

TypeError: Cannot compare type 'Timestamp' with type 'int'

但是,我使用.dtype 确保两列都是日期时间数据类型。
我还检查了任何列中的任何整数值,但找不到。

以下是两列数据的示例:

df.Time

Time
2017-09-01 01:31:10.000  2017-09-01 01:31:10

df_target

Time
2017-12-01 22:17:00  2017-12-01 22:17:00

【问题讨论】:

  • 您能否发布您的df["Time"]df_target["Time"] 的样本
  • 我只是猜想这个问题不在- (minus) 操作中,因为我们得到了TypeError: Cannot compare type 'Timestamp' with type 'int',所以也许数据结构有一些排序或索引? ——

标签: python pandas


【解决方案1】:

好的,所以我想出了答案。

由于其中一个数据帧有一个基于日期时间的索引,而另一个有一个整数索引,我使用 reset_index 使两个数据帧都有一个由整数组成的索引。然后让我使用上面提到的代码。

df["Diff"] = df["Time"] - df_target["Time"]

感谢您的帮助!

【讨论】:

    【解决方案2】:

    将带日期的两列都转换为pd.to_datetime,然后执行操作。

    【讨论】:

    • 您好,谢谢!然而,它仍然给我同样的错误信息。
    【解决方案3】:

    Pandas 时间戳差异返回一个 datetime.timedelta 对象。这可以通过使用 as_type 方法轻松转换为小时,就像这样

    import pandas
    df = pandas.DataFrame(columns=['to','fr','ans'])
    df.to = [pandas.Timestamp('2014-01-24 13:03:12.050000'), pandas.Timestamp('2014-01-27 
    11:57:18.240000'), pandas.Timestamp('2014-01-23 10:07:47.660000')]
    df.fr = [pandas.Timestamp('2014-01-26 23:41:21.870000'), pandas.Timestamp('2014-01-27 
    15:38:22.540000'), pandas.Timestamp('2014-01-23 18:50:41.420000')]
    (df.fr-df.to).astype('timedelta64[h]')
    

    屈服,

    0    58
    1     3
    2     8
    dtype: float64
    

    【讨论】:

      猜你喜欢
      • 2020-08-13
      • 1970-01-01
      • 2018-12-30
      • 2020-04-21
      • 2020-08-15
      • 2018-09-01
      • 2017-10-09
      • 1970-01-01
      • 2023-03-29
      相关资源
      最近更新 更多