我有一个如下所述的数据框:
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的差。有可能吗?
答案 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