Python:根据条件计算时间戳差异

时间:2019-01-15 22:50:55

标签: python-3.x timestamp

我有一个像这样的数据集:

id   timestamp         action                          count
1    1262488099.821    mouse pressed                     ?
2    1262488101.397    mouse pressed                     ?
3    1262488101.460    perform BLUETOOTH_CONTROL_S4      2
4    1262488112.508    perform BLUETOOTH_SOURCE_S4       2

每个记录的“执行”请求是界面上某些鼠标按下操作的结果-我对到达请求所花的时间很感兴趣。

我正在查看一般的任何操作,该操作出现在“操作”列中且“计数”>0。表中给出的计数只是在给定操作之前“按下鼠标”操作的计数执行。 因此,我基本上需要使用“计数”数字,并查看过去由“计数”指定的“按鼠标”操作的数量。然后将“按下的鼠标”移到过去“计数”的距离处,并计算时间戳的差异。 之后,将其附加到原始操作的行。

因此对于上面的示例,我想获得:

id   timestamp         action                          count       timestamp diff
1    1262488099.821    mouse pressed                     ?            ?
2    1262488101.397    mouse pressed                     ?            ?
3    1262488101.460    perform BLUETOOTH_CONTROL_S4      2            1.639
4    1262488112.508    perform BLUETOOTH_SOURCE_S4       2            12.687

谢谢

此致

dkk

2 个答案:

答案 0 :(得分:0)

如果将鼠标按下的时间戳与您注册的前一个时间戳进行比较,该怎么办?

就像声明一个名为last_timestamp的变量,然后执行一个新动作,创建一个新动作,进行比较,写出差异,然后将last_timestamp值更改为最新的

答案 1 :(得分:0)

经过调查,我构建了此脚本(我想在输入项中有一个名为“ data”的数据集):

import pandas as pd
data_2 = data.sort_values(by='timestamp', ascending=False)
data_2.index = pd.RangeIndex(len(data_2.index))
data_2['timestamp_diff'] = '?'
for i in data_2['action']: 
  index_i = int(data_2[data_2['action']==i].index[0])
  delta = 0
  for j in range(index_i,len(data_2['action'])) : 
    if 'mouse' in data_2['action'][j] and 'pressed' in data_2['action'][j]:
      delta+=1
      if delta ==data_2['count'][index_i]:
        print(data_2['count'][index_i])
        data_2['timestamp_diff'][index_i] = round(data_2['timestamp'][index_i] - data_2['timestamp'][j],3)

    else :
      delta = delta

data = data_2.sort_values(by='timestamp')
data.index = pd.RangeIndex(len(data.index))
data