当前位置: 首页 > 面试题库 >

计算pandas连续两行之间的时差

竺焕
2023-03-14
问题内容

我有一个熊猫数据框如下

Dev_id     Time
88345      13:40:31
87556      13:20:33
88955      13:05:00
.....      ........
85678      12:15:28

上面的数据帧有83000行。我想获取两个连续行之间的时间差,并将其保存在单独的列中。理想的结果是

Dev_id    Time          Time_diff(in min)
88345      13:40:31      20
87556      13:20:33      15
88955      13:05:00      15

我已经尝试过df['Time_diff'] = df['Time'].diff(-1)但出现错误,如下所示

TypeError: unsupported operand type(s) for -: 'datetime.time' and 'datetime.time'

如何解决这个问题


问题答案:

问题是功能pandas需要datetimes或timedeltas
diff,因此首先要转换为to_timedelta,然后得到total_seconds并除以60

df['Time_diff'] = pd.to_timedelta(df['Time'].astype(str)).diff(-1).dt.total_seconds().div(60)
#alternative
#df['Time_diff'] = pd.to_datetime(df['Time'].astype(str)).diff(-1).dt.total_seconds().div(60)
print (df)
   Dev_id      Time  Time_diff
0   88345  13:40:31  19.966667
1   87556  13:20:33  15.550000
2   88955  13:05:00  49.533333
3   85678  12:15:28        NaN

如果需要floorround每分钟:

df['Time_diff'] = (pd.to_timedelta(df['Time'].astype(str))
                     .diff(-1)
                     .dt.floor('T')
                     .dt.total_seconds()
                     .div(60))
print (df)
   Dev_id      Time  Time_diff
0   88345  13:40:31       19.0
1   87556  13:20:33       15.0
2   88955  13:05:00       49.0
3   85678  12:15:28        NaN


 类似资料:
  • 问题内容: 我有一个带有StartDate列的表,我想计算两个连续记录之间的时间差。 谢谢。 @ Mark Byers和@ Yahia,我将请求表作为requestId,startdate 我想知道requestid 1和2、2和3、3和4等之间的时差是多少。我知道我需要在表上进行自我连接,但是我在子句上没有得到正确的支持。 问题答案: 要实现您的要求,请尝试以下操作(从OP编辑后进行更新): 如

  • 问题内容: 在python中,如何引用上一行并针对它计算一些内容?具体来说,我有工作在-我有一个数据帧全的股票价格信息,看起来像这样: 这是我创建此数据框的方法: 从第2行开始,或者在这种情况下,我想是250(PS- 是索引吗?),我想为此数据帧中的每个条目计算2011-01-03和2011-01-04之间的差。我相信适当的方法是编写一个函数,该函数采用当前行,然后找出前一行,并计算它们之间的差,

  • 问题内容: 我有一个数据帧,有三列:,和; 计数是浮点数,日期是2015年的连续几天。 我试图找出和列中每一天的计数之间的差异,这意味着,我试图计算这两列的每一行与上一行之间的差异。我已经将日期设置为索引,但是却很难弄清楚该如何做。关于使用有一些提示,但是我没有运气找到合适的答案或说明。 我有点受阻,不胜感激这里的一些指导。 这是我的数据框的样子: 问题答案: 应该给出期望的结果:

  • 我想计算Java中两小时(HH:mm:ss)之间的时间差(持续时间)。在这里,我读了几个关于这个主题的主题,但我的问题有点不同。 我也不能使用。 示例: ode: 结果:

  • 我有一些能量计,将继续产生计数器值,这是一个累积指标。即不断增加,直到计数器复位。 有一个实时ETL作业,它在事件时间的两个连续值之间进行减法。 例如。 此外,有时事件可能没有按顺序接收。 如何使用Apache Flink流式API实现?最好使用Java中的示例。

  • 问题内容: 我需要计算两个日期之间经过的时间。 这里要注意的是,我需要像YouTube一样用视频评论时间戳来显示它。也就是说,仅以最大的方式显示它。 例如, 如果时间是50秒前,应该说是50秒前。 如果时间超过一分钟,则应说一分钟前/十分钟前,等等。 如果时差是1小时30分钟,则应显示:一个小时前。 如果时间是一个半星期而不是一个星期前应该说的话。 如果时间超过一个月,则应说一个月前/两个月前,等