Python 计算滚动时间窗口中的百分比变化
模拟数据帧如下所示:Python 计算滚动时间窗口中的百分比变化,python,pandas,Python,Pandas,模拟数据帧如下所示: server_name log_time occurrence_in_1h 0 A 2018-05-01 08:00:02 1 1 B 2018-04-30 15:20:43 1 2 B 2018-05-01 15:06:58 1 3 C 2018-04-30 21:07:
server_name log_time occurrence_in_1h
0 A 2018-05-01 08:00:02 1
1 B 2018-04-30 15:20:43 1
2 B 2018-05-01 15:06:58 1
3 C 2018-04-30 21:07:52 1
4 C 2018-04-30 22:02:34 1
5 C 2018-04-30 22:07:31 2
6 D 2018-04-30 01:20:39 1
7 D 2018-04-30 01:20:39 2
8 D 2018-04-30 01:20:39 3
server_name log_time occurrence_in_1h occurrence_in_1h_pct_change
0 A 2018-05-01 08:00:02 1 0.0
1 B 2018-04-30 15:20:43 1 0.0
2 B 2018-05-01 15:06:58 1 0.0
3 C 2018-04-30 21:07:52 1 0.0
4 C 2018-04-30 21:28:17 2 0.0
5 C 2018-04-30 22:02:34 1 0.0
6 C 2018-04-30 22:07:31 2 1.0
7 C 2018-04-30 22:15:08 3 0.5
8 D 2018-04-30 01:20:39 1 0.0
9 D 2018-04-30 01:20:39 2 0.0
10 D 2018-04-30 01:20:39 3 0.0
我想得到每台服务器在列中出现的百分比差异,如下所示:
server_name log_time occurrence_in_1h
0 A 2018-05-01 08:00:02 1
1 B 2018-04-30 15:20:43 1
2 B 2018-05-01 15:06:58 1
3 C 2018-04-30 21:07:52 1
4 C 2018-04-30 22:02:34 1
5 C 2018-04-30 22:07:31 2
6 D 2018-04-30 01:20:39 1
7 D 2018-04-30 01:20:39 2
8 D 2018-04-30 01:20:39 3
server_name log_time occurrence_in_1h occurrence_in_1h_pct_change
0 A 2018-05-01 08:00:02 1 0.0
1 B 2018-04-30 15:20:43 1 0.0
2 B 2018-05-01 15:06:58 1 0.0
3 C 2018-04-30 21:07:52 1 0.0
4 C 2018-04-30 21:28:17 2 0.0
5 C 2018-04-30 22:02:34 1 0.0
6 C 2018-04-30 22:07:31 2 1.0
7 C 2018-04-30 22:15:08 3 0.5
8 D 2018-04-30 01:20:39 1 0.0
9 D 2018-04-30 01:20:39 2 0.0
10 D 2018-04-30 01:20:39 3 0.0
我试过使用
df.set_index(['log_time']).groupby(['server_name'])['occurrence_in_1h'].rolling('1h').apply(lambda x:(x.iloc[-1]-x.iloc[0])/x.iloc[0])
它将在第4a行1.0
中给出发生率1h
时间窗口中计算发生率
,而是在1h
时间窗口内。第9行和第10行也出现了同样的情况,它们应该是0.0
我知道这是因为没有以前的
1h
时间窗口来计算这些行,但我如何才能实现我想要的?什么是“序列号”
?您的示例中没有此列dataframe@AndrejKesely抱歉,我已将其编辑为“服务器名称”