Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/325.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python 工作和维护的日期时间解释;中断时间计算_Python_Pandas_Datetime - Fatal编程技术网

Python 工作和维护的日期时间解释;中断时间计算

Python 工作和维护的日期时间解释;中断时间计算,python,pandas,datetime,Python,Pandas,Datetime,我从csv中提取数据,并在使用python准备数据后转换为以下格式。 我想进一步准备如下,将其存储为数据库中的表 如下表所示,从0分钟到52分钟的第8小时为其工作时间(状态:1) 从第8小时53分钟到59分钟休息(小吃休息)(状态:2) 我如何转换它 Existing +------+-------+------------+------+------+------+----------+--------+--------+-------+-----+ | | plant | d

我从csv中提取数据,并在使用python准备数据后转换为以下格式。 我想进一步准备如下,将其存储为数据库中的表

如下表所示,从0分钟到52分钟的第8小时为其工作时间(状态:1) 从第8小时53分钟到59分钟休息(小吃休息)(状态:2)

我如何转换它

Existing
+------+-------+------------+------+------+------+----------+--------+--------+-------+-----+
|      | plant |    date    | shop | line | hour | startmin | endmin | status | shift | uph |
+------+-------+------------+------+------+------+----------+--------+--------+-------+-----+
|    8 | HEF1  | 03-01-2020 | E    |    1 |    8 |        0 |     52 |      1 |     2 |  25 |
|    9 | HEF1  | 03-01-2020 | E    |    1 |    8 |       53 |     59 |      2 |     2 |  25 |
|   10 | HEF1  | 03-01-2020 | E    |    1 |    9 |        0 |     59 |      1 |     2 |  25 |
|   11 | HEF1  | 03-01-2020 | E    |    1 |   10 |        0 |     59 |      1 |     2 |  25 |
| 9645 | HEF2  | 27-01-2020 | E    |    1 |    7 |        0 |     59 |      1 |     1 |  58 |
| 9646 | HEF2  | 27-01-2020 | E    |    1 |    8 |        0 |     52 |      1 |     1 |  58 |
| 9647 | HEF2  | 27-01-2020 | E    |    1 |    8 |       53 |     59 |      2 |     1 |  58 |
+------+-------+------------+------+------+------+----------+--------+--------+-------+-----+
我想将其转换为如下所示

Required
+-------+---------------------+------+------+------+--------+-------+-----+
| plant |      datetime       | shop | line | hour | status | shift | uph |
+-------+---------------------+------+------+------+--------+-------+-----+
| HEF1  | 03-01-2020 08:00:00 | E    |    1 |    8 |      1 |     2 |  25 |
| HEF1  | 03-01-2020 08:01:00 | E    |    1 |    8 |      1 |     2 |  25 |
| HEF1  | 03-01-2020 08:02:00 | E    |    1 |    8 |      1 |     2 |  25 |
| HEF1  | 03-01-2020 08:03:00 | E    |    1 |    8 |      1 |     2 |  25 |
| HEF1  | 03-01-2020 08:04:00 | E    |    1 |    8 |      1 |     2 |  25 |
| HEF1  | 03-01-2020 08:05:00 | E    |    1 |    8 |      1 |     2 |  25 |
| HEF1  | 03-01-2020 08:06:00 | E    |    1 |    8 |      1 |     2 |  25 |
| HEF1  | 03-01-2020 08:07:00 | E    |    1 |    8 |      1 |     2 |  25 |
| HEF1  | 03-01-2020 08:08:00 | E    |    1 |    8 |      1 |     2 |  25 |
| HEF1  | 03-01-2020 08:09:00 | E    |    1 |    8 |      1 |     2 |  25 |
| HEF1  | 03-01-2020 08:10:00 | E    |    1 |    8 |      1 |     2 |  25 |
| HEF1  | 03-01-2020 08:11:00 | E    |    1 |    8 |      1 |     2 |  25 |
| HEF1  | 03-01-2020 08:12:00 | E    |    1 |    8 |      1 |     2 |  25 |
| HEF1  | 03-01-2020 08:13:00 | E    |    1 |    8 |      1 |     2 |  25 |
| HEF1  | 03-01-2020 08:14:00 | E    |    1 |    8 |      1 |     2 |  25 |
| HEF1  | 03-01-2020 08:15:00 | E    |    1 |    8 |      1 |     2 |  25 |
| HEF1  | 03-01-2020 08:16:00 | E    |    1 |    8 |      1 |     2 |  25 |
| HEF1  | 03-01-2020 08:17:00 | E    |    1 |    8 |      1 |     2 |  25 |
| HEF1  | 03-01-2020 08:18:00 | E    |    1 |    8 |      1 |     2 |  25 |
| HEF1  | 03-01-2020 08:19:00 | E    |    1 |    8 |      1 |     2 |  25 |
| HEF1  | 03-01-2020 08:20:00 | E    |    1 |    8 |      1 |     2 |  25 |
| HEF1  | 03-01-2020 08:21:00 | E    |    1 |    8 |      1 |     2 |  25 |
| HEF1  | 03-01-2020 08:22:00 | E    |    1 |    8 |      1 |     2 |  25 |
| HEF1  | 03-01-2020 08:23:00 | E    |    1 |    8 |      1 |     2 |  25 |
| HEF1  | 03-01-2020 08:24:00 | E    |    1 |    8 |      1 |     2 |  25 |
| HEF1  | 03-01-2020 08:25:00 | E    |    1 |    8 |      1 |     2 |  25 |
| HEF1  | 03-01-2020 08:26:00 | E    |    1 |    8 |      1 |     2 |  25 |
| HEF1  | 03-01-2020 08:27:00 | E    |    1 |    8 |      1 |     2 |  25 |
| HEF1  | 03-01-2020 08:28:00 | E    |    1 |    8 |      1 |     2 |  25 |
| HEF1  | 03-01-2020 08:29:00 | E    |    1 |    8 |      1 |     2 |  25 |
| HEF1  | 03-01-2020 08:30:00 | E    |    1 |    8 |      1 |     2 |  25 |
| HEF1  | 03-01-2020 08:31:00 | E    |    1 |    8 |      1 |     2 |  25 |
| HEF1  | 03-01-2020 08:32:00 | E    |    1 |    8 |      1 |     2 |  25 |
| HEF1  | 03-01-2020 08:33:00 | E    |    1 |    8 |      1 |     2 |  25 |
| HEF1  | 03-01-2020 08:34:00 | E    |    1 |    8 |      1 |     2 |  25 |
| HEF1  | 03-01-2020 08:35:00 | E    |    1 |    8 |      1 |     2 |  25 |
| HEF1  | 03-01-2020 08:36:00 | E    |    1 |    8 |      1 |     2 |  25 |
| HEF1  | 03-01-2020 08:37:00 | E    |    1 |    8 |      1 |     2 |  25 |
| HEF1  | 03-01-2020 08:38:00 | E    |    1 |    8 |      1 |     2 |  25 |
| HEF1  | 03-01-2020 08:39:00 | E    |    1 |    8 |      1 |     2 |  25 |
| HEF1  | 03-01-2020 08:40:00 | E    |    1 |    8 |      1 |     2 |  25 |
| HEF1  | 03-01-2020 08:41:00 | E    |    1 |    8 |      1 |     2 |  25 |
| HEF1  | 03-01-2020 08:42:00 | E    |    1 |    8 |      1 |     2 |  25 |
| HEF1  | 03-01-2020 08:43:00 | E    |    1 |    8 |      1 |     2 |  25 |
| HEF1  | 03-01-2020 08:44:00 | E    |    1 |    8 |      1 |     2 |  25 |
| HEF1  | 03-01-2020 08:45:00 | E    |    1 |    8 |      1 |     2 |  25 |
| HEF1  | 03-01-2020 08:46:00 | E    |    1 |    8 |      1 |     2 |  25 |
| HEF1  | 03-01-2020 08:47:00 | E    |    1 |    8 |      1 |     2 |  25 |
| HEF1  | 03-01-2020 08:48:00 | E    |    1 |    8 |      1 |     2 |  25 |
| HEF1  | 03-01-2020 08:49:00 | E    |    1 |    8 |      1 |     2 |  25 |
| HEF1  | 03-01-2020 08:50:00 | E    |    1 |    8 |      1 |     2 |  25 |
| HEF1  | 03-01-2020 08:51:00 | E    |    1 |    8 |      1 |     2 |  25 |
| HEF1  | 03-01-2020 08:52:00 | E    |    1 |    8 |      1 |     2 |  25 |

| HEF1  | 03-01-2020 08:53:00 | E    |    1 |    8 |      2 |     2 |  25 |
| HEF1  | 03-01-2020 08:54:00 | E    |    1 |    8 |      2 |     2 |  25 |
| HEF1  | 03-01-2020 08:55:00 | E    |    1 |    8 |      2 |     2 |  25 |
| HEF1  | 03-01-2020 08:56:00 | E    |    1 |    8 |      2 |     2 |  25 |
| HEF1  | 03-01-2020 08:57:00 | E    |    1 |    8 |      2 |     2 |  25 |
| HEF1  | 03-01-2020 08:58:00 | E    |    1 |    8 |      2 |     2 |  25 |
| HEF1  | 03-01-2020 08:59:00 | E    |    1 |    8 |      2 |     2 |  25 |

| HEF1  | 03-01-2020 09:00:00 | E    |    1 |    8 |      1 |     2 |  25 |
| HEF1  | 03-01-2020 09:01:00 | E    |    1 |    8 |      1 |     2 |  25 |
+-------+---------------------+------+------+------+--------+-------+-----+

首先创建开始和结束时间戳:

df['start_ts'] = pd.to_datetime(df['date'].astype(str) +' '+ df['hour'].astype(str)+':'+df['startmin'].astype(str))
df['end_ts'] = pd.to_datetime(df['date'].astype(str) +' '+ df['hour'].astype(str)+':'+df['endmin'].astype(str))
然后创建日期范围列:

df['t_range'] = [pd.date_range(start=x[0], end=x[1], freq='min') for x in zip(df['start_ts'], df['end_ts'])]
然后按该列进行分解:

df.explode('t_range')

根据需要删除和重命名列

首先创建开始和结束时间戳:

df['start_ts'] = pd.to_datetime(df['date'].astype(str) +' '+ df['hour'].astype(str)+':'+df['startmin'].astype(str))
df['end_ts'] = pd.to_datetime(df['date'].astype(str) +' '+ df['hour'].astype(str)+':'+df['endmin'].astype(str))
然后创建日期范围列:

df['t_range'] = [pd.date_range(start=x[0], end=x[1], freq='min') for x in zip(df['start_ts'], df['end_ts'])]
然后按该列进行分解:

df.explode('t_range')
根据需要删除和重命名列