以1分钟的间隔时间计算行值的差

时间:2018-08-28 13:59:56

标签: python python-3.x pandas time pandas-groupby

我有一个如下所述的数据框:

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

我想为每个PROCESS_No计算每1分钟间隔VALUE的差。有可能吗?

1 个答案:

答案 0 :(得分:2)

您可以使用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