我有一个带有timedeltas的pandas DataFrame,作为在单独的列中以毫秒表示的这些delta的累积和。下面提供了一个示例:
Transaction_ID Time TimeDelta CumSum[ms]
1 00:00:04.500 00:00:00.000 000
2 00:00:04.600 00:00:00.100 100
3 00:00:04.762 00:00:00.162 262
4 00:00:05.543 00:00:00.781 1043
5 00:00:09.567 00:00:04.024 5067
6 00:00:10.654 00:00:01.087 6154
7 00:00:14.300 00:00:03.646 9800
8 00:00:14.532 00:00:00.232 10032
9 00:00:16.500 00:00:01.968 12000
10 00:00:17.543 00:00:01.043 13043
我希望能够提供CumSum [ms]的最大值,之后,累积总和将再次从0开始。例如,如果在上面的示例中最大值为3000,结果将如下所示:
Transaction_ID Time TimeDelta CumSum[ms]
1 00:00:04.500 00:00:00.000 000
2 00:00:04.600 00:00:00.100 100
3 00:00:04.762 00:00:00.162 262
4 00:00:05.543 00:00:00.781 1043
5 00:00:09.567 00:00:04.024 0
6 00:00:10.654 00:00:01.087 1087
7 00:00:14.300 00:00:03.646 0
8 00:00:14.532 00:00:00.232 232
9 00:00:16.500 00:00:01.968 2200
10 00:00:17.543 00:00:01.043 0
我已经探索过使用模运算符,但是只有当结果的总和等于所提供的限制时(即500%500的cum [ms]等于零),才能成功重置为零。
预先感谢您的任何想法,如果可以提供更多信息,请告诉我。
这是一个如何遍历数据帧中每一行的示例。为了简单起见,我为该示例创建了新数据:
df = pd.DataFrame({'TimeDelta': np.random.normal( 900, 60, size=100)})
print df.head()
TimeDelta
0 971.021295
1 734.359861
2 867.000397
3 992.166539
4 853.281131
因此,让我们用您希望的最大3000个累加器循环:
maxvalue = 3000
lastvalue = 0
newcum = []
for row in df.iterrows():
thisvalue = row[1]['TimeDelta'] + lastvalue
if thisvalue > maxvalue:
thisvalue = 0
newcum.append( thisvalue )
lastvalue = thisvalue
然后将newcom
列表放入数据框:
df['newcum'] = newcum
print df.head()
TimeDelta newcum
0 801.977678 801.977678
1 893.296429 1695.274107
2 935.303566 2630.577673
3 850.719497 0.000000
4 951.554206 951.554206
问题内容: 如何求和下一行的总和,直到达到阈值点,然后再次重置计数器。 例如,如果阈值是10,我试图获得以下输出: 但是我只能通过以下查询获得累计距离: 我正在使用PostgreSQL。 问题答案: 使用用户定义的聚合 实时测试:http://sqlfiddle.com/#!17/16716/2 用户定义的合计sum_with_reset定义: 数据 输出: 单线: Postgres布尔值可以使用
我在用R做一些建模算法,其中一个是用Java运行的(bartMachine)。我发现,由于数据的大小,我需要在运行建模算法之前增加java的最大堆空间。 我是这样做的: 我的问题是,如果没有其他算法使用java(或者至少有那么多堆空间),我是否需要在以后重置堆空间?或者,分配给java的内存会根据需要回收,而不会造成性能损失? 我已经搜索了一些关于这个主题的内容,并且我了解如何更改/降低堆空间。我
我有输入数组A 我想要函数Max(T, A)返回B表示A上的最大值在大小T的前一个移动窗口中 通过使用最大堆跟踪当前移动窗口A[i]到A[it]上的最大值,该算法产生O(N log(T))最坏情况。 我想知道有没有更好的算法?可能是O(N)算法
问题内容: 创建一个将根据年份重置的序列。考虑以9位数开头000000001且最大为999999999的序列。 假设Date为30/12/2017,seq为000012849,所以当日期为01/01/2018时,我希望seq为000000001。 问题答案: 创建一个定期计划作业,该作业在每年的1月1日午夜重新设置顺序。 类似于(假设您有执行重置的过程):
计算newArr数组所有对象中arr二维数组,比较后返回其中的[[最小值,最小值],[最大值,最大值]]; 要这种结果[[39.867638888888884, 115.39333333333333], [50.97152777777777, 120.31527777777778]]
当我使用beeline connect到hiveserver2时,err消息如下所示。我以前连接过hiveserver2。在我多次连接到hiveserver2之后,会显示此错误。我可以使用jdbc:hive2://连接 SLF4J:类路径包含多个SLF4J绑定。slf4j:在[jar:file:/usr/local/hive/lib/log4j-Slf4j-impl-2.4.1.jar!/org/