鱼C论坛

 找回密码
 立即注册
查看: 1832|回复: 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):
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',
       '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']


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

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

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

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

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

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

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

# 统计时间(设备使用的总时间)
result.agg({'used_time': sum}, )
#---
used_time   1 days 06:43:09
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):
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',
       '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']


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

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

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

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

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

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

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

# 统计时间(设备使用的总时间)
result.agg({'used_time': sum}, )
#---
used_time   1 days 06:43:09
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):

大佬,最后的总时间  没有输出最后的总时间   是什么原因勒
<bound method DataFrame.aggregate of                      t1  f1                  t2  f2       used_time
88  2022-06-29 19:38:53  暂停 2022-06-28 22:00:28  开始 0 days 21:38:25
260 2022-06-30 10:06:34  完成 2022-06-29 20:36:31  开始 0 days 13:30:03
324 2022-06-30 10:06:34  完成 2022-06-30 10:06:34  开始 0 days 00:00:00
328 2022-06-30 10:06:34  完成 2022-06-30 10:06:34  开始 0 days 00:00:00
333 2022-06-30 10:06:34  完成 2022-06-30 10:06:34  开始 0 days 00:00:00
338 2022-06-30 10:06:34  完成 2022-06-30 10:06:34  开始 0 days 00:00:00
340 2022-06-30 10:06:34  完成 2022-06-30 10:06:34  开始 0 days 00:00:00
344 2022-06-30 10:06:34  完成 2022-06-30 10:06:34  开始 0 days 00:00:00
346 2022-06-30 10:06:34  完成 2022-06-30 10:06:34  开始 0 days 00:00:00
349 2022-06-30 10:06:34  完成 2022-06-30 10:06:34  开始 0 days 00:00:00
353 2022-06-30 10:06:34  完成 2022-06-30 10:06:34  开始 0 days 00:00:00
355 2022-06-30 10:06:34  完成 2022-06-30 10:06:34  开始 0 days 00:00:00
357 2022-06-30 10:06:34  完成 2022-06-30 10:06:34  开始 0 days 00:00:00
361 2022-06-30 10:06:34  完成 2022-06-30 10:06:34  开始 0 days 00:00:00
366 2022-06-30 10:06:34  完成 2022-06-30 10:06:34  开始 0 days 00:00:00
371 2022-06-30 10:06:34  完成 2022-06-30 10:06:34  开始 0 days 00:00:00
373 2022-06-30 10:06:34  完成 2022-06-30 10:06:34  开始 0 days 00:00:00
377 2022-06-30 10:06:34  完成 2022-06-30 10:06:34  开始 0 days 00:00:00
379 2022-06-30 10:06:34  完成 2022-06-30 10:06:34  开始 0 days 00:00:00
385 2022-06-30 10:06:34  完成 2022-06-30 10:06:34  开始 0 days 00:00:00
388 2022-06-30 10:06:34  完成 2022-06-30 10:06:34  开始 0 days 00:00:00
392 2022-06-30 10:06:34  完成 2022-06-30 10:06:34  开始 0 days 00:00:00
394 2022-06-30 10:06:34  完成 2022-06-30 10:06:34  开始 0 days 00:00:00
397 2022-06-30 10:06:34  完成 2022-06-30 10:06:34  开始 0 days 00:00:00
401 2022-06-30 10:06:34  完成 2022-06-30 10:06:34  开始 0 days 00:00:00
405 2022-06-30 10:06:34  完成 2022-06-30 10:06:34  开始 0 days 00:00:00
410 2022-06-30 10:06:34  完成 2022-06-30 10:06:34  开始 0 days 00:00:00
412 2022-06-30 10:06:34  完成 2022-06-30 10:06:34  开始 0 days 00:00:00
417 2022-06-30 10:06:34  完成 2022-06-30 10:06:34  开始 0 days 00:00:00
420 2022-06-30 10:06:34  完成 2022-06-30 10:06:34  开始 0 days 00:00:00
424 2022-06-30 10:06:34  完成 2022-06-30 10:06:34  开始 0 days 00:00:00
427 2022-06-30 10:06:34  完成 2022-06-30 10:06:34  开始 0 days 00:00:00
431 2022-06-30 10:06:34  完成 2022-06-30 10:06:34  开始 0 days 00:00:00
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-9-28 14:12

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

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