如果我使用这样的1或NaNpandas.core.series.Series
命名ts
:
3382 NaN
3381 NaN
...
3369 NaN
3368 NaN
...
15 1
10 NaN
11 1
12 1
13 1
9 NaN
8 NaN
7 NaN
6 NaN
3 NaN
4 1
5 1
2 NaN
1 NaN
0 NaN
我想计算该系列的总和,但应在NaN的位置将其重置(设置为零),如下所示:
3382 0
3381 0
...
3369 0
3368 0
...
15 1
10 0
11 1
12 2
13 3
9 0
8 0
7 0
6 0
3 0
4 1
5 2
2 0
1 0
0 0
理想情况下,我希望有一个矢量化解决方案!
我曾经在Matlab上看到过类似的问题: 在NaN上重置Matlabcumsum吗?
但我不知道如何翻译这行 d = diff([0 c(n)]);
Matlab代码的简单Numpy翻译是这样的:
import numpy as np
v = np.array([1., 1., 1., np.nan, 1., 1., 1., 1., np.nan, 1.])
n = np.isnan(v)
a = ~n
c = np.cumsum(a)
d = np.diff(np.concatenate(([0.], c[n])))
v[n] = -d
np.cumsum(v)
执行此代码将返回结果array([ 1., 2., 3., 0., 1., 2., 3., 4., 0., 1.])
。此解决方案仅会与原始解决方案一样有效,但是如果它不足以满足您的目的,它可能会帮助您提供更好的解决方案。
问题内容: 我有这个数据框 我需要做的是从C列开始累积值的总和,直到下一个值为零,然后重置累积总和,直到完成所有行。 预期产量: 我已经使用了该函数并达到了期望的输出,但是问题是您无法定义固定的窗口范围,因为DataFrame可以连续五次显示数字,有时只能是两次,依此类推。 我的问题与以下Pyspark非常相似:重置条件下的累积总和,但没有人回答。 要重现数据帧: 问题答案: 创建一个临时列(),
问题内容: 我想对列进行累加,但是每当遇到0时就重置聚合值 这是我尝试做的一个例子: 该数据集: 给出以下内容: 问题答案: 在SQL Server 2008中,由于无法使用分析函数,因此受到了严重限制。以下方法效率不高,但可以解决您的问题: las,在SQL Server 2012之前,最有效的解决方案可能涉及游标。在SQL Server 2012+中,您只需执行以下操作:
我想知道为什么需要(又名reduce)第3个参数。对于那些不知道是什么的人,它的用法如下: 调用等同于: 还有可选第4个参数,它允许用任何其他操作替换加法。 我听说的一个基本原理是,如果你不需要加起来,而是乘一个向量的元素,我们需要其他的(非零)初始值: 但是为什么不像Python那样-为设置初始值,并使用从开始的范围。类似这样的事情: 这对任何行动都管用。为什么需要第三个参数?
动态添加对象的属性 Vue中,动态新增对象的属性时,不能直接添加。正确的做法是:Vue.set(obj,key,value)。参考链接:# 判断一个checkbox是否被选中 <!-- v-model里的内容是变量,变量里的值可能是 true 后者 false --> <input type="checkbox" v-model="isSelected"> <!-- 选中时,值为 true。未选
问题内容: 我已经实现了一定数量的所有素数的列表。我试图做的事情很难解释,所以我只用一些硬代码展示一下: 所以从本质上讲,我试图从上一个列表中按顺序取出一个元素,然后按指数倍增,然后将其追加到其他列表中。 我意识到我可以做到这一点,这可能会更容易: 我需要一些想法才能在某种程度上做到这一点。 问题答案: 您需要 累积产品 清单。这是一个简单的食谱: 另一种方法,使用itertools: 或者,也许
假设我有几个case类和函数来测试它们: 现在我定义了一个新的case类< code>Person和一个测试函数,它很快就会失败。 现在,我希望函数累积错误,而不是快速失败。 我希望 始终执行所有这些 函数并返回 。我该怎么做?