我有一个熊猫数据框如下
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
需要datetime
s或timedelta
s
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
如果需要floor
或round
每分钟:
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分钟,则应显示:一个小时前。 如果时间是一个半星期而不是一个星期前应该说的话。 如果时间超过一个月,则应说一个月前/两个月前,等