鱼C论坛

 找回密码
 立即注册
查看: 1771|回复: 8

[已解决]python提取数据对比的问题

[复制链接]
发表于 2022-7-19 13:13:36 | 显示全部楼层 |阅读模式
20鱼币
本帖最后由 任申猴 于 2022-7-19 15:06 编辑

计算设备使用时间


[2022-07-01 18:31:57\n', '20220701-KBW.S 开始\n', '2022-07-01 18:31:56\n', '2022-07-01 18:31:56\n', '2022-07-01 18:31:56\n', '2022-07-01 18:31:54\n', '2022-07-01 18:23:02\n', '2022-07-01 18:22:35\n', '2022-07-01 18:21:24\n', '2022-07-01 18:21:24\n', '2022-07-01 18:21:24\n', '2022-07-01 18:21:24\n', '2022-07-01 18:21:24\n', '2022-07-01 18:21:24\n', '2022-07-01 18:21:24\n', '2022-07-01 18:19:38\n', '2022-07-01 09:33:41\n', '2022-07-01 09:33:39\n', '2022-07-01 09:33:30\n', '2022-07-01 09:33:26\n', '2022-07-01 09:33:26\n', '2022-07-01 09:33:26\n', '2022-07-01 09:33:20\n', '2022-07-01 09:33:03\n', '2022-07-01 09:32:59\n', '2022-07-01 09:32:26\n', '2022-07-01 09:31:18\n', '2022-07-01 09:31:16\n', '2022-07-01 09:31:16\n', '2022-07-01 09:31:16\n', '2022-07-01 09:31:16\n', '2022-07-01 09:31:16\n', '2022-07-01 09:31:16\n', '2022-07-01 09:31:13\n', '2022-07-01 09:31:13\n', '2022-07-01 09:22:15\n', '2022-07-01 09:21:30\n', '2022-07-01 09:21:30\n', '2022-07-01 09:21:30\n', '2022-07-01 09:21:30\n', '2022-07-01 09:21:30\n', '2022-07-01 03:14:02\n', '2022-07-01 03:14:01\n', '2022-07-01 03:14:01\n', '20220628-kbw.S 完成\n', '2022-07-01 03:14:01\n', '2022-06-30 18:09:17\n', '20220628-kbw.S 开始\n', '2022-06-30 18:09:17\n', '2022-06-30 18:09:16\n', '2022-06-30 18:09:16\n', '2022-06-30 14:48:26\n', '2022-06-30 14:48:26\n', '2022-06-30 14:46:37\n', '2022-06-30 14:46:01\n', '2022-06-30 14:46:01\n', '2022-06-30 14:46:01\n', '2022-06-30 14:46:01\n', '2022-06-30 14:46:01\n', '2022-06-30 14:46:01\n', '2022-06-30 14:46:01\n', '2022-06-30 14:45:59\n', '2022-06-30 13:24:35\n', '2022-06-30 13:24:35\n', '2022-06-30 13:24:35\n', '2022-06-30 13:24:35\n', '2022-06-30 10:57:16\n', '2022-06-30 10:57:16\n', '2022-06-30 10:57:15\n', '2022-06-30 10:57:15\n', '2022-06-30 10:57:11\n', '2022-06-30 10:35:56\n', '2022-06-30 10:30:55\n', '2022-06-30 10:30:55\n', '2022-06-30 10:16:54\n', '2022-06-30 10:15:30\n', '2022-06-30 10:15:30\n', '2022-06-30 10:15:28\n', '2022-06-30 10:15:28\n', '2022-06-30 10:12:51\n', '2022-06-30 10:11:53\n', '2022-06-30 10:11:53\n', '2022-06-30 10:11:45\n', '2022-06-30 10:11:45\n', '2022-06-30 10:11:44\n', '2022-06-30 10:08:16\n', '2022-06-30 10:08:16\n', '2022-06-30 10:07:12\n', '2022-06-30 10:07:09\n', '2022-06-30 10:06:34\n', '2022-06-30 10:06:34\n', '2022-06-30 10:06:34\n', '20220628-kbw.S 完成\n', '2022-06-30 10:06:34\n', '20220628-kbw.S 开始\n', '2022-06-29 20:36:31\n', '2022-06-29 20:36:30\n', '2022-06-29 20:36:30\n', '2022-06-29 19:46:58\n', '2022-06-29 19:44:50\n', '2022-06-29 19:44:46\n', '2022-06-29 19:44:11\n', '2022-06-29 19:44:11\n', '2022-06-29 19:44:11\n', '2022-06-29 19:44:11\n', '2022-06-29 19:44:11\n', '2022-06-29 19:44:11\n', '2022-06-29 19:44:11\n', '2022-06-29 19:44:11\n', '2022-06-29 19:42:00\n', '2022-06-29 19:41:58\n', '2022-06-29 19:41:48\n', '2022-06-29 19:41:43\n', '2022-06-29 19:41:43\n', '2022-06-29 19:41:43\n', '2022-06-29 19:41:36\n', '2022-06-29 19:41:17\n', '2022-06-29 19:41:12\n', '2022-06-29 19:41:04\n', '2022-06-29 19:40:57\n', '2022-06-29 19:40:53\n', '2022-06-29 19:40:53\n', '2022-06-29 19:40:53\n', '2022-06-29 19:40:47\n', '2022-06-29 19:40:47\n', '2022-06-29 19:40:46\n', '2022-06-29 19:40:43\n', '2022-06-29 19:40:42\n', '2022-06-29 19:38:54\n', '2022-06-29 19:38:53\n', '2022-06-29 19:38:53\n', '20220628-kbw.S 暂停\n', '2022-06-28 22:00:28\n', '20220628-kbw.S 开始\n', '2022-06-28 22:00:28\n', '2022-06-28 22:00:27\n', '2022-06-28 22:00:27\n', '2022-06-28 21:51:38\n', '2022-06-28 21:51:31\n', '2022-06-28 21:51:15\n', '20220627.S\n', '2022-06-28 21:51:13\n', '2022-06-28 21:51:03\n', '2022-06-28 21:51:01\n', '2022-06-28 21:50:59\n', '2022-06-28 21:50:59\n', '2022-06-28 21:50:59\n', '2022-06-28 21:50:52\n', '2022-06-28 21:49:33\n', '2022-06-28 21:49:29\n', '2022-06-28 21:49:29\n', '2022-06-28 21:49:29\n', '2022-06-28 21:49:29\n', '2022-06-28 21:49:29\n', '2022-06-28 21:49:29\n', '2022-06-28 21:49:29\n', '2022-06-28 21:22:13\n', '20220627  \n', '2022-06-28 21:22:13\n', '20220627.S\n', '2022-06-28 21:22:12\n', '20220627.S 完成\n', '2022-06-28 21:22:12\n', '20220627.LOG\n', '2022-06-28 20:36:11\n', '20220627.S 开始\n', '2022-06-28 20:36:11\n', '20220627  \n', '2022-06-28 20:36:11\n', '20220627.S\n', '2022-06-28 20:36:11\n', '20220627  \n', '2022-06-28 20:35:26\n', '2022-06-28 20:33:52\n', '2022-06-28 20:15:44\n', '2022-06-28 20:15:44\n', '2022-06-28 20:15:44\n', '2022-06-28 20:15:44\n', '2022-06-28 20:15:44\n', '2022-06-28 20:15:44\n', '2022-06-28 20:15:44\n', '2022-06-28 20:06:03\n', '20220627  \n', '2022-06-28 20:06:03\n', '20220627.S\n', '2022-06-28 20:06:02\n', '20220627.LOG\n', '2022-06-28 20:06:02\n', '20220627.S 完成\n', '2022-06-28 10:35:30\n']

设备使用的总时间 =      (暂停时间  - 开始时间) + (完成时间-开始时间)      
-kbw.S 开始  到 -kbw.S  暂停    算一个时间段  -kbw.S   开始  到  -kbw.S  完成  是一个时间段    ,暂停后也算完成,下一次使用又是设备开始   
情况1   是  开始使用到暂停使用    包含   '-kbw.S 开始\n’  的前一个时间数据  (ps:红色是设备开始使用的时间)  '2022-06-30 18:09:17\n', '20220628-kbw.S 开始\n',   设备暂时的时间 (ps:红色是设备暂停的时间) '2022-06-29 19:38:53\n', '20220628-kbw.S 暂停\n'  计算这个时间差      
情况2  是   开始使用到完成使用                  '2022-06-30 10:06:34\n', '20220628-kbw.S 完成\n',          '2022-06-30 10:06:34\n', '20220628-kbw.S 开始\           
需要的时间都是包含“2022-**-** -kbw.S 开始/2022-**-** -kbw.S 暂停/2022-**-** -kbw.S 完成”的前一个日期时间     

问题是我需要的时间跟不需要的时间格式都是一样的   我不知道该怎么提取出来
                        
最佳答案
2022-7-19 13:13:37
本帖最后由 阿奇_o 于 2022-7-20 00:23 编辑

应该理解你的意思了,给你看看效果(Jupyter Notebook):
  1. log = ['2022-07-01 18:31:57\n', '20220701-KBW.S 开始\n', '2022-07-01 18:31:56\n', '2022-07-01 18:31:56\n', '2022-07-01 18:31:56\n', '2022-07-01 18:31:54\n', '2022-07-01 18:23:02\n', '2022-07-01 18:22:35\n', '2022-07-01 18:21:24\n', '2022-07-01 18:21:24\n', '2022-07-01 18:21:24\n', '2022-07-01 18:21:24\n', '2022-07-01 18:21:24\n', '2022-07-01 18:21:24\n', '2022-07-01 18:21:24\n', '2022-07-01 18:19:38\n', '2022-07-01 09:33:41\n', '2022-07-01 09:33:39\n', '2022-07-01 09:33:30\n', '2022-07-01 09:33:26\n', '2022-07-01 09:33:26\n', '2022-07-01 09:33:26\n', '2022-07-01 09:33:20\n', '2022-07-01 09:33:03\n', '2022-07-01 09:32:59\n', '2022-07-01 09:32:26\n', '2022-07-01 09:31:18\n', '2022-07-01 09:31:16\n', '2022-07-01 09:31:16\n', '2022-07-01 09:31:16\n', '2022-07-01 09:31:16\n', '2022-07-01 09:31:16\n', '2022-07-01 09:31:16\n', '2022-07-01 09:31:13\n', '2022-07-01 09:31:13\n', '2022-07-01 09:22:15\n', '2022-07-01 09:21:30\n', '2022-07-01 09:21:30\n', '2022-07-01 09:21:30\n', '2022-07-01 09:21:30\n', '2022-07-01 09:21:30\n', '2022-07-01 03:14:02\n', '2022-07-01 03:14:01\n', '2022-07-01 03:14:01\n', '20220628-kbw.S 完成\n', '2022-07-01 03:14:01\n', '2022-06-30 18:09:17\n', '20220628-kbw.S 开始\n', '2022-06-30 18:09:17\n', '2022-06-30 18:09:16\n', '2022-06-30 18:09:16\n', '2022-06-30 14:48:26\n', '2022-06-30 14:48:26\n', '2022-06-30 14:46:37\n', '2022-06-30 14:46:01\n', '2022-06-30 14:46:01\n', '2022-06-30 14:46:01\n', '2022-06-30 14:46:01\n', '2022-06-30 14:46:01\n', '2022-06-30 14:46:01\n', '2022-06-30 14:46:01\n', '2022-06-30 14:45:59\n', '2022-06-30 13:24:35\n', '2022-06-30 13:24:35\n', '2022-06-30 13:24:35\n', '2022-06-30 13:24:35\n', '2022-06-30 10:57:16\n', '2022-06-30 10:57:16\n', '2022-06-30 10:57:15\n', '2022-06-30 10:57:15\n', '2022-06-30 10:57:11\n', '2022-06-30 10:35:56\n', '2022-06-30 10:30:55\n', '2022-06-30 10:30:55\n', '2022-06-30 10:16:54\n', '2022-06-30 10:15:30\n', '2022-06-30 10:15:30\n', '2022-06-30 10:15:28\n', '2022-06-30 10:15:28\n', '2022-06-30 10:12:51\n', '2022-06-30 10:11:53\n', '2022-06-30 10:11:53\n', '2022-06-30 10:11:45\n', '2022-06-30 10:11:45\n', '2022-06-30 10:11:44\n', '2022-06-30 10:08:16\n', '2022-06-30 10:08:16\n', '2022-06-30 10:07:12\n', '2022-06-30 10:07:09\n', '2022-06-30 10:06:34\n', '2022-06-30 10:06:34\n', '2022-06-30 10:06:34\n', '20220628-kbw.S 完成\n',
  2.        '2022-06-30 10:06:34\n', '20220628-kbw.S 开始\n', '2022-06-29 20:36:31\n', '2022-06-29 20:36:30\n', '2022-06-29 20:36:30\n', '2022-06-29 19:46:58\n', '2022-06-29 19:44:50\n', '2022-06-29 19:44:46\n', '2022-06-29 19:44:11\n', '2022-06-29 19:44:11\n', '2022-06-29 19:44:11\n', '2022-06-29 19:44:11\n', '2022-06-29 19:44:11\n', '2022-06-29 19:44:11\n', '2022-06-29 19:44:11\n', '2022-06-29 19:44:11\n', '2022-06-29 19:42:00\n', '2022-06-29 19:41:58\n', '2022-06-29 19:41:48\n', '2022-06-29 19:41:43\n', '2022-06-29 19:41:43\n', '2022-06-29 19:41:43\n', '2022-06-29 19:41:36\n', '2022-06-29 19:41:17\n', '2022-06-29 19:41:12\n', '2022-06-29 19:41:04\n', '2022-06-29 19:40:57\n', '2022-06-29 19:40:53\n', '2022-06-29 19:40:53\n', '2022-06-29 19:40:53\n', '2022-06-29 19:40:47\n', '2022-06-29 19:40:47\n', '2022-06-29 19:40:46\n', '2022-06-29 19:40:43\n', '2022-06-29 19:40:42\n', '2022-06-29 19:38:54\n', '2022-06-29 19:38:53\n', '2022-06-29 19:38:53\n', '20220628-kbw.S 暂停\n', '2022-06-28 22:00:28\n', '20220628-kbw.S 开始\n', '2022-06-28 22:00:28\n', '2022-06-28 22:00:27\n', '2022-06-28 22:00:27\n', '2022-06-28 21:51:38\n', '2022-06-28 21:51:31\n', '2022-06-28 21:51:15\n', '20220627.S\n', '2022-06-28 21:51:13\n', '2022-06-28 21:51:03\n', '2022-06-28 21:51:01\n', '2022-06-28 21:50:59\n', '2022-06-28 21:50:59\n', '2022-06-28 21:50:59\n', '2022-06-28 21:50:52\n', '2022-06-28 21:49:33\n', '2022-06-28 21:49:29\n', '2022-06-28 21:49:29\n', '2022-06-28 21:49:29\n', '2022-06-28 21:49:29\n', '2022-06-28 21:49:29\n', '2022-06-28 21:49:29\n', '2022-06-28 21:49:29\n', '2022-06-28 21:22:13\n', '20220627  \n', '2022-06-28 21:22:13\n', '20220627.S\n', '2022-06-28 21:22:12\n', '20220627.S 完成\n', '2022-06-28 21:22:12\n', '20220627.LOG\n', '2022-06-28 20:36:11\n', '20220627.S 开始\n', '2022-06-28 20:36:11\n', '20220627  \n', '2022-06-28 20:36:11\n', '20220627.S\n', '2022-06-28 20:36:11\n', '20220627  \n', '2022-06-28 20:35:26\n', '2022-06-28 20:33:52\n', '2022-06-28 20:15:44\n', '2022-06-28 20:15:44\n', '2022-06-28 20:15:44\n', '2022-06-28 20:15:44\n', '2022-06-28 20:15:44\n', '2022-06-28 20:15:44\n', '2022-06-28 20:15:44\n', '2022-06-28 20:06:03\n', '20220627  \n', '2022-06-28 20:06:03\n', '20220627.S\n', '2022-06-28 20:06:02\n', '20220627.LOG\n', '2022-06-28 20:06:02\n', '20220627.S 完成\n', '2022-06-28 10:35:30\n']


  3. import re
  4. the_time = re.findall('(\d+-\d+-\d+ \d+:\d+:\d+)\n\d+-[KBWkbw]+.S (\w+)\n', ''.join(log))
  5. the_time
  6. #---
  7. [('2022-07-01 18:31:57', '开始'),
  8. ('2022-07-01 03:14:01', '完成'),
  9. ('2022-06-30 18:09:17', '开始'),
  10. ('2022-06-30 10:06:34', '完成'),
  11. ('2022-06-30 10:06:34', '开始'),
  12. ('2022-06-29 19:38:53', '暂停'),
  13. ('2022-06-28 22:00:28', '开始')]

  14. #%%
  15. df = pd.DataFrame(the_time, columns=['time', 'flag'])
  16. df = df.astype({'time': 'datetime64'})
  17. df

  18. #%%
  19. df0 = df.sort_values('time').reset_index(drop=True)
  20. df0

  21. #%%
  22. df1 = df.sort_values('time').reset_index(drop=True).shift()
  23. df1

  24. #%%
  25. res = pd.concat([df0, df1], axis=1)
  26. res.columns = ['t1', 'f1', 't2', 'f2']
  27. res
  28. #---
  29. t1        f1        t2        f2
  30. 0        2022-06-28 22:00:28        开始        NaT        NaN
  31. 1        2022-06-29 19:38:53        暂停        2022-06-28 22:00:28        开始
  32. 2        2022-06-30 10:06:34        完成        2022-06-29 19:38:53        暂停
  33. 3        2022-06-30 10:06:34        开始        2022-06-30 10:06:34        完成
  34. 4        2022-06-30 18:09:17        开始        2022-06-30 10:06:34        开始
  35. 5        2022-07-01 03:14:01        完成        2022-06-30 18:09:17        开始
  36. 6        2022-07-01 18:31:57        开始        2022-07-01 03:14:01        完成

  37. #%%
  38. result = res[ ((res.f1 == '暂停') & (res.f2 == '开始')) |
  39.               ((res.f1 == '完成') & (res.f2 == '开始')) ].loc[:]

  40. # 计算时间差
  41. result['used_time'] = result.t1 - result.t2
  42. display(result)
  43. #---
  44. t1        f1        t2        f2        used_time
  45. 1        2022-06-29 19:38:53        暂停        2022-06-28 22:00:28        开始        0 days 21:38:25
  46. 5        2022-07-01 03:14:01        完成        2022-06-30 18:09:17        开始        0 days 09:04:44

  47. # 统计时间(设备使用的总时间)
  48. result.agg({'used_time': sum}, )
  49. #---
  50. used_time   1 days 06:43:09
  51. dtype: timedelta64[ns]

复制代码


ps: 若对你帮助很大,不妨请我喝杯奶茶,蜜雪冰城的哦 ^_     【WX号:Archi_ATM】

最佳答案

查看完整内容

应该理解你的意思了,给你看看效果(Jupyter Notebook): ps: 若对你帮助很大,不妨请我喝杯奶茶,蜜雪冰城的哦 ^_ 【WX号:Archi_ATM】
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

发表于 2022-7-19 13:13:37 | 显示全部楼层    本楼为最佳答案   
本帖最后由 阿奇_o 于 2022-7-20 00:23 编辑

应该理解你的意思了,给你看看效果(Jupyter Notebook):
  1. log = ['2022-07-01 18:31:57\n', '20220701-KBW.S 开始\n', '2022-07-01 18:31:56\n', '2022-07-01 18:31:56\n', '2022-07-01 18:31:56\n', '2022-07-01 18:31:54\n', '2022-07-01 18:23:02\n', '2022-07-01 18:22:35\n', '2022-07-01 18:21:24\n', '2022-07-01 18:21:24\n', '2022-07-01 18:21:24\n', '2022-07-01 18:21:24\n', '2022-07-01 18:21:24\n', '2022-07-01 18:21:24\n', '2022-07-01 18:21:24\n', '2022-07-01 18:19:38\n', '2022-07-01 09:33:41\n', '2022-07-01 09:33:39\n', '2022-07-01 09:33:30\n', '2022-07-01 09:33:26\n', '2022-07-01 09:33:26\n', '2022-07-01 09:33:26\n', '2022-07-01 09:33:20\n', '2022-07-01 09:33:03\n', '2022-07-01 09:32:59\n', '2022-07-01 09:32:26\n', '2022-07-01 09:31:18\n', '2022-07-01 09:31:16\n', '2022-07-01 09:31:16\n', '2022-07-01 09:31:16\n', '2022-07-01 09:31:16\n', '2022-07-01 09:31:16\n', '2022-07-01 09:31:16\n', '2022-07-01 09:31:13\n', '2022-07-01 09:31:13\n', '2022-07-01 09:22:15\n', '2022-07-01 09:21:30\n', '2022-07-01 09:21:30\n', '2022-07-01 09:21:30\n', '2022-07-01 09:21:30\n', '2022-07-01 09:21:30\n', '2022-07-01 03:14:02\n', '2022-07-01 03:14:01\n', '2022-07-01 03:14:01\n', '20220628-kbw.S 完成\n', '2022-07-01 03:14:01\n', '2022-06-30 18:09:17\n', '20220628-kbw.S 开始\n', '2022-06-30 18:09:17\n', '2022-06-30 18:09:16\n', '2022-06-30 18:09:16\n', '2022-06-30 14:48:26\n', '2022-06-30 14:48:26\n', '2022-06-30 14:46:37\n', '2022-06-30 14:46:01\n', '2022-06-30 14:46:01\n', '2022-06-30 14:46:01\n', '2022-06-30 14:46:01\n', '2022-06-30 14:46:01\n', '2022-06-30 14:46:01\n', '2022-06-30 14:46:01\n', '2022-06-30 14:45:59\n', '2022-06-30 13:24:35\n', '2022-06-30 13:24:35\n', '2022-06-30 13:24:35\n', '2022-06-30 13:24:35\n', '2022-06-30 10:57:16\n', '2022-06-30 10:57:16\n', '2022-06-30 10:57:15\n', '2022-06-30 10:57:15\n', '2022-06-30 10:57:11\n', '2022-06-30 10:35:56\n', '2022-06-30 10:30:55\n', '2022-06-30 10:30:55\n', '2022-06-30 10:16:54\n', '2022-06-30 10:15:30\n', '2022-06-30 10:15:30\n', '2022-06-30 10:15:28\n', '2022-06-30 10:15:28\n', '2022-06-30 10:12:51\n', '2022-06-30 10:11:53\n', '2022-06-30 10:11:53\n', '2022-06-30 10:11:45\n', '2022-06-30 10:11:45\n', '2022-06-30 10:11:44\n', '2022-06-30 10:08:16\n', '2022-06-30 10:08:16\n', '2022-06-30 10:07:12\n', '2022-06-30 10:07:09\n', '2022-06-30 10:06:34\n', '2022-06-30 10:06:34\n', '2022-06-30 10:06:34\n', '20220628-kbw.S 完成\n',
  2.        '2022-06-30 10:06:34\n', '20220628-kbw.S 开始\n', '2022-06-29 20:36:31\n', '2022-06-29 20:36:30\n', '2022-06-29 20:36:30\n', '2022-06-29 19:46:58\n', '2022-06-29 19:44:50\n', '2022-06-29 19:44:46\n', '2022-06-29 19:44:11\n', '2022-06-29 19:44:11\n', '2022-06-29 19:44:11\n', '2022-06-29 19:44:11\n', '2022-06-29 19:44:11\n', '2022-06-29 19:44:11\n', '2022-06-29 19:44:11\n', '2022-06-29 19:44:11\n', '2022-06-29 19:42:00\n', '2022-06-29 19:41:58\n', '2022-06-29 19:41:48\n', '2022-06-29 19:41:43\n', '2022-06-29 19:41:43\n', '2022-06-29 19:41:43\n', '2022-06-29 19:41:36\n', '2022-06-29 19:41:17\n', '2022-06-29 19:41:12\n', '2022-06-29 19:41:04\n', '2022-06-29 19:40:57\n', '2022-06-29 19:40:53\n', '2022-06-29 19:40:53\n', '2022-06-29 19:40:53\n', '2022-06-29 19:40:47\n', '2022-06-29 19:40:47\n', '2022-06-29 19:40:46\n', '2022-06-29 19:40:43\n', '2022-06-29 19:40:42\n', '2022-06-29 19:38:54\n', '2022-06-29 19:38:53\n', '2022-06-29 19:38:53\n', '20220628-kbw.S 暂停\n', '2022-06-28 22:00:28\n', '20220628-kbw.S 开始\n', '2022-06-28 22:00:28\n', '2022-06-28 22:00:27\n', '2022-06-28 22:00:27\n', '2022-06-28 21:51:38\n', '2022-06-28 21:51:31\n', '2022-06-28 21:51:15\n', '20220627.S\n', '2022-06-28 21:51:13\n', '2022-06-28 21:51:03\n', '2022-06-28 21:51:01\n', '2022-06-28 21:50:59\n', '2022-06-28 21:50:59\n', '2022-06-28 21:50:59\n', '2022-06-28 21:50:52\n', '2022-06-28 21:49:33\n', '2022-06-28 21:49:29\n', '2022-06-28 21:49:29\n', '2022-06-28 21:49:29\n', '2022-06-28 21:49:29\n', '2022-06-28 21:49:29\n', '2022-06-28 21:49:29\n', '2022-06-28 21:49:29\n', '2022-06-28 21:22:13\n', '20220627  \n', '2022-06-28 21:22:13\n', '20220627.S\n', '2022-06-28 21:22:12\n', '20220627.S 完成\n', '2022-06-28 21:22:12\n', '20220627.LOG\n', '2022-06-28 20:36:11\n', '20220627.S 开始\n', '2022-06-28 20:36:11\n', '20220627  \n', '2022-06-28 20:36:11\n', '20220627.S\n', '2022-06-28 20:36:11\n', '20220627  \n', '2022-06-28 20:35:26\n', '2022-06-28 20:33:52\n', '2022-06-28 20:15:44\n', '2022-06-28 20:15:44\n', '2022-06-28 20:15:44\n', '2022-06-28 20:15:44\n', '2022-06-28 20:15:44\n', '2022-06-28 20:15:44\n', '2022-06-28 20:15:44\n', '2022-06-28 20:06:03\n', '20220627  \n', '2022-06-28 20:06:03\n', '20220627.S\n', '2022-06-28 20:06:02\n', '20220627.LOG\n', '2022-06-28 20:06:02\n', '20220627.S 完成\n', '2022-06-28 10:35:30\n']


  3. import re
  4. the_time = re.findall('(\d+-\d+-\d+ \d+:\d+:\d+)\n\d+-[KBWkbw]+.S (\w+)\n', ''.join(log))
  5. the_time
  6. #---
  7. [('2022-07-01 18:31:57', '开始'),
  8. ('2022-07-01 03:14:01', '完成'),
  9. ('2022-06-30 18:09:17', '开始'),
  10. ('2022-06-30 10:06:34', '完成'),
  11. ('2022-06-30 10:06:34', '开始'),
  12. ('2022-06-29 19:38:53', '暂停'),
  13. ('2022-06-28 22:00:28', '开始')]

  14. #%%
  15. df = pd.DataFrame(the_time, columns=['time', 'flag'])
  16. df = df.astype({'time': 'datetime64'})
  17. df

  18. #%%
  19. df0 = df.sort_values('time').reset_index(drop=True)
  20. df0

  21. #%%
  22. df1 = df.sort_values('time').reset_index(drop=True).shift()
  23. df1

  24. #%%
  25. res = pd.concat([df0, df1], axis=1)
  26. res.columns = ['t1', 'f1', 't2', 'f2']
  27. res
  28. #---
  29. t1        f1        t2        f2
  30. 0        2022-06-28 22:00:28        开始        NaT        NaN
  31. 1        2022-06-29 19:38:53        暂停        2022-06-28 22:00:28        开始
  32. 2        2022-06-30 10:06:34        完成        2022-06-29 19:38:53        暂停
  33. 3        2022-06-30 10:06:34        开始        2022-06-30 10:06:34        完成
  34. 4        2022-06-30 18:09:17        开始        2022-06-30 10:06:34        开始
  35. 5        2022-07-01 03:14:01        完成        2022-06-30 18:09:17        开始
  36. 6        2022-07-01 18:31:57        开始        2022-07-01 03:14:01        完成

  37. #%%
  38. result = res[ ((res.f1 == '暂停') & (res.f2 == '开始')) |
  39.               ((res.f1 == '完成') & (res.f2 == '开始')) ].loc[:]

  40. # 计算时间差
  41. result['used_time'] = result.t1 - result.t2
  42. display(result)
  43. #---
  44. t1        f1        t2        f2        used_time
  45. 1        2022-06-29 19:38:53        暂停        2022-06-28 22:00:28        开始        0 days 21:38:25
  46. 5        2022-07-01 03:14:01        完成        2022-06-30 18:09:17        开始        0 days 09:04:44

  47. # 统计时间(设备使用的总时间)
  48. result.agg({'used_time': sum}, )
  49. #---
  50. used_time   1 days 06:43:09
  51. dtype: timedelta64[ns]

复制代码


ps: 若对你帮助很大,不妨请我喝杯奶茶,蜜雪冰城的哦 ^_     【WX号:Archi_ATM】

想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

发表于 2022-7-19 13:57:12 | 显示全部楼层
提问真的是一门考验逻辑和叙述能力的工作。
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

 楼主| 发表于 2022-7-19 14:16:28 | 显示全部楼层
suchocolate 发表于 2022-7-19 13:57
提问真的是一门考验逻辑和叙述能力的工作。

就是   提取所有包含     ' -kbw.S 开始\n', 前面的第一个时间数据   与 '-kbw.S 暂停\n'前面的第一个时间数据
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

发表于 2022-7-19 14:22:30 | 显示全部楼层
?说什么在
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

发表于 2022-7-19 17:10:48 | 显示全部楼层
任申猴 发表于 2022-7-19 14:16
就是   提取所有包含     ' -kbw.S 开始\n', 前面的第一个时间数据   与 '-kbw.S 暂停\n'前面的第一个时 ...


可以找到开始/暂停的位置,然后减1就是需要的数据位置
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

 楼主| 发表于 2022-7-20 16:26:04 | 显示全部楼层
感谢大佬
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

 楼主| 发表于 2022-7-20 16:51:57 | 显示全部楼层
阿奇_o 发表于 2022-7-19 13:13
应该理解你的意思了,给你看看效果(Jupyter Notebook):

大佬,最后的总时间  没有输出最后的总时间   是什么原因勒
  1. <bound method DataFrame.aggregate of                      t1  f1                  t2  f2       used_time
  2. 88  2022-06-29 19:38:53  暂停 2022-06-28 22:00:28  开始 0 days 21:38:25
  3. 260 2022-06-30 10:06:34  完成 2022-06-29 20:36:31  开始 0 days 13:30:03
  4. 324 2022-06-30 10:06:34  完成 2022-06-30 10:06:34  开始 0 days 00:00:00
  5. 328 2022-06-30 10:06:34  完成 2022-06-30 10:06:34  开始 0 days 00:00:00
  6. 333 2022-06-30 10:06:34  完成 2022-06-30 10:06:34  开始 0 days 00:00:00
  7. 338 2022-06-30 10:06:34  完成 2022-06-30 10:06:34  开始 0 days 00:00:00
  8. 340 2022-06-30 10:06:34  完成 2022-06-30 10:06:34  开始 0 days 00:00:00
  9. 344 2022-06-30 10:06:34  完成 2022-06-30 10:06:34  开始 0 days 00:00:00
  10. 346 2022-06-30 10:06:34  完成 2022-06-30 10:06:34  开始 0 days 00:00:00
  11. 349 2022-06-30 10:06:34  完成 2022-06-30 10:06:34  开始 0 days 00:00:00
  12. 353 2022-06-30 10:06:34  完成 2022-06-30 10:06:34  开始 0 days 00:00:00
  13. 355 2022-06-30 10:06:34  完成 2022-06-30 10:06:34  开始 0 days 00:00:00
  14. 357 2022-06-30 10:06:34  完成 2022-06-30 10:06:34  开始 0 days 00:00:00
  15. 361 2022-06-30 10:06:34  完成 2022-06-30 10:06:34  开始 0 days 00:00:00
  16. 366 2022-06-30 10:06:34  完成 2022-06-30 10:06:34  开始 0 days 00:00:00
  17. 371 2022-06-30 10:06:34  完成 2022-06-30 10:06:34  开始 0 days 00:00:00
  18. 373 2022-06-30 10:06:34  完成 2022-06-30 10:06:34  开始 0 days 00:00:00
  19. 377 2022-06-30 10:06:34  完成 2022-06-30 10:06:34  开始 0 days 00:00:00
  20. 379 2022-06-30 10:06:34  完成 2022-06-30 10:06:34  开始 0 days 00:00:00
  21. 385 2022-06-30 10:06:34  完成 2022-06-30 10:06:34  开始 0 days 00:00:00
  22. 388 2022-06-30 10:06:34  完成 2022-06-30 10:06:34  开始 0 days 00:00:00
  23. 392 2022-06-30 10:06:34  完成 2022-06-30 10:06:34  开始 0 days 00:00:00
  24. 394 2022-06-30 10:06:34  完成 2022-06-30 10:06:34  开始 0 days 00:00:00
  25. 397 2022-06-30 10:06:34  完成 2022-06-30 10:06:34  开始 0 days 00:00:00
  26. 401 2022-06-30 10:06:34  完成 2022-06-30 10:06:34  开始 0 days 00:00:00
  27. 405 2022-06-30 10:06:34  完成 2022-06-30 10:06:34  开始 0 days 00:00:00
  28. 410 2022-06-30 10:06:34  完成 2022-06-30 10:06:34  开始 0 days 00:00:00
  29. 412 2022-06-30 10:06:34  完成 2022-06-30 10:06:34  开始 0 days 00:00:00
  30. 417 2022-06-30 10:06:34  完成 2022-06-30 10:06:34  开始 0 days 00:00:00
  31. 420 2022-06-30 10:06:34  完成 2022-06-30 10:06:34  开始 0 days 00:00:00
  32. 424 2022-06-30 10:06:34  完成 2022-06-30 10:06:34  开始 0 days 00:00:00
  33. 427 2022-06-30 10:06:34  完成 2022-06-30 10:06:34  开始 0 days 00:00:00
  34. 431 2022-06-30 10:06:34  完成 2022-06-30 10:06:34  开始 0 days 00:00:00
  35. 523 2022-07-01 03:14:01  完成 2022-06-30 18:09:17  开始 0 days 09:04:44>
复制代码
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

发表于 2022-7-20 17:05:03 | 显示全部楼层
膜拜大佬
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

小黑屋|手机版|Archiver|鱼C工作室 ( 粤ICP备18085999号-1 | 粤公网安备 44051102000585号)

GMT+8, 2024-5-20 12:44

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

快速回复 返回顶部 返回列表