Вычислить разницу значений строк с интервалом в 1 минуту - PullRequest
0 голосов
/ 28 августа 2018

У меня есть датафрейм, как указано ниже:

TIME        PRCESS_NO   VALUE
13:40:34    1111        10254
13:40:37    1111        25855
13:40:45    1111        10254
13:40:53    1111        10254
13:40:58    1111        68522
13:41:08    1111        10254
13:41:34    1111        10254
13:41:56    1111        25855
13:42:14    1111        10254
13:42:20    1111        10254
13:42:29    1111        68522
13:42:33    2222        68522
13:42:37    2222        25855
13:42:53    2222        10254
13:42:59    2222        10254
13:43:04    2222        25855
13:43:17    2222        10254
13:43:32    2222        10254
13:44:10    2222        68522
13:44:16    3333        68522
13:44:16    3333        25855
13:44:22    3333        25855
13:44:29    3333        68522
13:44:34    3333        68522
13:44:38    3333        10254
13:44:47    3333        10254
13:44:51    3333        10254

Я хочу рассчитать разницу значений VALUE на каждом 1-минутном интервале для отдельного PROCESS_No. Возможно ли это?

1 Ответ

0 голосов
/ 28 августа 2018

Вы можете использовать pd.Series.dt.floor, чтобы рассчитывать время в минуту. Предполагается, что вы указываете минутные интервалы каждый раз, когда вы достигаете 0 секунд.

Тогда отбросьте дубликаты и нас GroupBy + diff.

df['DT'] = pd.to_datetime(str(pd.to_datetime('today')) + ' ' + df['TIME'])
df['DT'] = df['DT'].dt.floor('min')

res = df.drop_duplicates('DT')
res['DIFF'] = res.groupby('PRCESS_NO')['VALUE'].diff()

print(res)

        TIME  PRCESS_NO  VALUE                  DT     DIFF
0   13:40:34       1111  10254 2018-08-28 13:40:00      NaN
5   13:41:08       1111  10254 2018-08-28 13:41:00      0.0
8   13:42:14       1111  10254 2018-08-28 13:42:00      0.0
15  13:43:04       2222  25855 2018-08-28 13:43:00      NaN
18  13:44:10       2222  68522 2018-08-28 13:44:00  42667.0
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...