【问题标题】:Time difference: incorrect values of seconds时差:不正确的秒值
【发布时间】:2022-01-21 17:02:27
【问题描述】:

我尝试通过id 计算 groupby 数据每 2 行之间的时间差。数据看起来像

id    date
11    2021-02-04 10:34:46+03:00
11    2021-02-07 14:58:24+03:00
11    2021-02-07 19:23:28+03:00
11    2021-02-08 10:21:44+03:00
11    2021-02-09 11:36:09+03:00

我用那个:

df['time_diff'] = df.groupby('id')['date'].diff().dt.seconds.div(60).fillna(0)

我注意到我的结果不正确。 当我只使用它时

df.groupby('id')['date'].diff()

我明白了,这是正确的

70225                NaT
72324    3 days 04:23:38
72367    0 days 04:25:04
72515    0 days 14:58:16
73343    1 days 01:14:25
...

但是当我尝试将其转换为秒时

df.groupby('id')['date'].diff().dt.seconds

我明白了

70225         NaN
72324     15818.0
72367     15904.0
72515     53896.0
73343      4465.0
...

为什么会发生?

【问题讨论】:

    标签: python pandas datetime timedelta


    【解决方案1】:

    如果没有可重复的示例,或者不了解您的期望行为,很难回答这个问题。

    我怀疑你可以用 pd.Series.dt.total_seconds() 做到这一点:

    df.groupby('id')['date'].diff().dt.total_seconds()
    

    如果这不起作用,您可以尝试以下方法:

    df.groupby('id')['date'].diff() / pd.Timedelta(seconds=1)
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2018-11-03
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2015-08-21
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多