Манипулировать колоннами панд с указанием даты и времени - PullRequest
0 голосов
/ 12 июня 2019

Пожалуйста, посмотрите этот пост SO Управление столбцами панд

Я поделился этим фреймом данных:

+----------+------------+-------+-----+------+
| Location |    Date    | Event | Key | Time |
+----------+------------+-------+-----+------+
| i2       | 2019-03-02 |     1 | a   |      |
| i2       | 2019-03-02 |     1 | a   |      |
| i2       | 2019-03-02 |     1 | a   |      |
| i2       | 2019-03-04 |     1 | a   |    2 |
| i2       | 2019-03-15 |     2 | b   |    0 |
| i9       | 2019-02-22 |     2 | c   |    0 |
| i9       | 2019-03-10 |     3 | d   |      |
| i9       | 2019-03-10 |     3 | d   |    0 |
| s8       | 2019-04-22 |     1 | e   |      |
| s8       | 2019-04-25 |     1 | e   |      |
| s8       | 2019-04-28 |     1 | e   |    6 |
| t14      | 2019-05-13 |     3 | f   |      |
+----------+------------+-------+-----+------+

Это дополнительный вопрос.Рассмотрим еще два столбца после даты, как показано ниже.

+-----------------------+----------------------+
| Start Time (hh:mm:ss) | Stop Time (hh:mm:ss) |
+-----------------------+----------------------+
| 13:24:38              | 14:17:39             |
| 03:48:36              | 04:17:20             |
| 04:55:05              | 05:23:48             |
| 08:44:34              | 09:13:15             |
| 19:21:05              | 20:18:57             |
| 21:05:06              | 22:01:50             |
| 14:24:43              | 14:59:37             |
| 07:57:32              | 09:46:21 
| 19:21:05              | 20:18:57             |
| 21:05:06              | 22:01:50             |
| 14:24:43              | 14:59:37             |
| 07:57:32              | 09:46:21             |
+-----------------------+----------------------+

Задача остается прежней - получить разницу во времени, но в часах, соответствующих времени окончания первой строки и времени начала последней строки для каждого ключа.

Основываясь на ответе, я пытался что-то вроде этого:

df['Time']=df.groupby(['Location','Event']).Date.\
           transform(lambda x : (x.iloc[-1]-x.iloc[0]))[~df.duplicated(['Location','Event'],keep='last')]

df['Time_h']=df.groupby(['Location','Event'])['Start Time (hh:mm:ss)','Stop Time (hh:mm:ss)'].\
            transform(lambda x,y : (x.iloc[-1]-y.iloc[0]))[~df.duplicated(['Location','Event'],keep='last')]    # This gives an error on transform 

, чтобы получить разницу в днях и часах отдельно, а затем объединить.Есть ли способ лучше?

...