我有一个dataframe“data”,它有5列,第一列是开始时间,第二列是结束时间。我还有第二个数据帧,叫做“allu times”,它是一个包含所有开始时间和结束时间的排序数据帧,它有一个并发计数器,通过计算一个值随时间的累积和来计算。每个开始时间的值为+1,每个结束时间的值为-1。我试图在每个“数据”行的范围内找到并发数的最小/最大值。你知道吗
我提出了一个如下所示的循环,它可以满足我的需要,但是非常慢。如何将此循环矢量化?你知道吗
data['min_concurrent'] = 0
data['max_concurrent'] = 0
for i in range(data.shape[0]):
timeranges = all_times[data.iloc[i,0]:data.iloc[i,1]]['cumsum']
data.iloc[i,5] = timerange['cumsum'].min()
data.iloc[i,6] = timerange['cumsum'].max()
期望输出示例:
start end ... min max
2017-01-01 00:00:02.187 2017-01-01 00:00:02.437 ... 1 1
2017-01-01 00:00:03.000 2017-01-01 00:00:04.000 ... 1 2
2017-01-01 00:00:03.700 2017-01-01 00:00:05.000 ... 1 2
2017-01-01 00:00:04.100 2017-01-01 00:00:04.200 ... 2 2
2017-01-01 00:00:04.500 2017-01-01 00:00:06.000 ... 1 2
上面也是“数据”的形状,下面是“所有时间”的形状:
timestamp value cumsum
2017-01-01 00:00:02.187 +1 1
2017-01-01 00:00:02.437 -1 0
2017-01-01 00:00:03.000 +1 1
2017-01-01 00:00:03.700 +1 2
2017-01-01 00:00:04.000 -1 1
2017-01-01 00:00:04.100 +1 2
2017-01-01 00:00:04.200 -1 1
2017-01-01 00:00:04.500 +1 2
2017-01-01 00:00:05.000 -1 1
2017-01-01 00:00:06.000 -1 0
那么,有没有一种方法可以让向量/矩阵运算更快呢?你知道吗
目前没有回答
相关问题 更多 >
编程相关推荐