我希望模拟一个包含以下组成部分的系统:
我尝试通过将时间轴合并到一个索引上来实现这一点:
- 一个发射器,在 [0, 1000) 毫秒内随机产生 n 个事件
- 一个消费者,以 f 毫秒间隔均匀采样事件流
- 一个消费者,以 g 毫秒间隔均匀采样事件流
0ms:f 采样,g 采样
5ms:f 采样
10ms:f 采样,g 采样
12ms:事件到达
13ms:事件到达
15ms:f 采样
20ms:f 采样,g 采样
25ms:f 采样
27ms:事件到达
30ms:f 采样,g 采样
35ms:f 采样
37ms:事件到达
我尝试通过将时间轴合并到一个索引上来实现这一点:
import numpy as np
import pandas as pd
f = np.arange(0, 40, 5)
g = np.arange(0, 40, 10)
events = [12, 13, 27, 37]
df = pd.concat([pd.Series(f, f), pd.Series(g, g), pd.Series(events, events)], axis=1)
这将产生一个类似于以下的DataFrame:
f g events
0 0 0 NaN
5 5 NaN NaN
10 10 10 NaN
12 NaN NaN 12
13 NaN NaN 13
15 15 NaN NaN
20 20 20 NaN
25 25 NaN NaN
27 NaN NaN 27
30 30 30 NaN
35 35 NaN NaN
37 NaN NaN 37
我一直试图通过各种操作找出以下捆绑的赢家:
In [103]: pd.expanding_max(df)
f g events
0 0 0 NaN
5 5 0 NaN
10 10 10 NaN
12 10 10 12
13 10 10 13
15 15 10 13
20 20 20 13
25 25 20 13
27 25 20 27
30 30 30 27
35 35 30 27
37 35 30 37
...但是一直很难找到一种类似于pandas的方法来实现它。
我觉得以下方法已经很接近了:
In [141]: x = pd.expanding_min(df.sort(ascending=False))
gx = x.groupby('events')
print gx.max()
events
12 15 20
13 15 20
27 30 30
37 35 30
有什么想法吗?
abs(event_time - consumer_time)
? - wflynny