首页 > 解决方案 > 以 1 分钟的间隔时间计算行值的差异

问题描述

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

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 差异。可能吗 ?

标签: pythonpython-3.xpandastimepandas-groupby

解决方案


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

推荐阅读