标签: cumsum

熊猫系列中的真假条纹

我正在尝试研究如何显示熊猫系列中的 条纹True或 条纹。False

数据:

p = pd.Series([True,False,True,True,True,True,False,False,True])

0     True
1    False
2     True
3     True
4     True
5     True
6    False
7    False
8     True
dtype: bool
Run Code Online (Sandbox Code Playgroud)

我尝试过p.diff(),但不确定如何计算False生成的值以显示我想要的输出,如下所示:

0     0
1     0
2     0
3     1
4     2
5     3
6     0
7     1
8     0
Run Code Online (Sandbox Code Playgroud)

python boolean series pandas cumsum

5
推荐指数
1
解决办法
2619
查看次数

如果 r 中的值变为负值,则重置 cumsum

ve <- c(17, -9, 9, -17, 17, -17, 11, -9, 16, -18, 17, 0, 0, -18, 17, 0, 0, -17, 14, -14, 17, -2, 0, -15, 9, -9, 17, -16, 16, -17, 17, -17, 17, -17, 17, -17, 17, -8, 7, -16, 17, -14, 14, -10, 10, -16, 16, -10, 10, -12, 12, -11, 11, -17, 17, -17, 17, -9, 8, -17, 17, -17, 17, -16, 16, -17, 17, -8, 8, -9, 9, -17, 17, -17, 17, -13, 13, -10, …
Run Code Online (Sandbox Code Playgroud)

r conditional-statements cumsum dplyr

5
推荐指数
1
解决办法
1669
查看次数

将 pandas 的skipna 全局默认设置设置为 False

对于某些 Pandas 函数,例如 sum()、cumsum() 和 cumprod(),有一个 Skipna 选项,默认设置为 True。这给我带来了问题,因为错误可能会悄悄地传播,所以我总是明确地将skipna设置为False。

sum_df = df.sum(skipna=False)
Run Code Online (Sandbox Code Playgroud)

每次出现这些函数之一时都执行此操作会使代码看起来有点笨拙。有没有办法改变 Pandas 的默认行为?

python sum pandas cumsum

5
推荐指数
1
解决办法
1603
查看次数

一项中多个值的累计总和

假设我有这个数据帧(“数字”变量也来自原始数据帧中的字符类型):

df <- data.frame(
  id = c(1,2,2,1,2),
  number = c(30.6, "50.2/15.5", "45/58.4", 80, "57/6"))
df$number <- as.character(df$number)
Run Code Online (Sandbox Code Playgroud)

现在我想添加另一列,其中包含每个 ID 的累积总和,我使用 执行此操作df %>% mutate(csum = ave(number, id, FUN=cumsum)),它适用于单个数字,但当然不适用于用“/”分隔的数字。我怎么解决这个问题?

最终的数据框应该是这样的:

df2 <- data.frame(
  id = c(1,2,2,1,2),
  number = c(30.6, "50.2/15.5", "45/58.4", 80, "57/6"),
  csum = c(30.6, "50.2/15.5", "95.2/73.9", 110.6, "152.2/79.9"))
df2
Run Code Online (Sandbox Code Playgroud)

r sum dataframe cumsum

5
推荐指数
1
解决办法
343
查看次数

调整列的元素以使 cumsum 等于 0

我在更大的数据集中有这些列(这里我只报告资产“x”,但有不同的资产,因此想法是为每个资产复制该过程):

df <- structure(list(
        asset = c("x", "x", "x", "x", "x", "x", "x", "x", "x", "x", "x")
        col1 =  c(10, 10, -22, 11, -13, 15, -7, -10, 10, -5, 3),  
        cumsum(col1) = c(10, 20, -2, 9, -4, 11, 4, -6, 4, -1, 2), 
        class = "data.frame", row.names = c(NA, -11L)
     )
Run Code Online (Sandbox Code Playgroud)

我想纠正 col1 中的负数,使 cumsum(col1) 等于

cumsum(col1) = c(10, 20, 0, 11, 0, 15, 8, 0, 10, 5, 8)
Run Code Online (Sandbox Code Playgroud)

为了得到这个结果,我需要纠正 col1 数字当且仅当负数大于前一个数字的总和。例如,-22第三个位置的 应该变为-20与前一个的 cumsum 相匹配10+10 …

r cumsum dplyr group

5
推荐指数
1
解决办法
84
查看次数

R cumunique喜欢cumsum

我想要一个与cumsum等效的函数,但不是加起来它计算到目前为止唯一值的数量.我可以为每个潜在的集合编写一个循环,但由于我的数据集有数百万的观察结果,这似乎会耗费时间.

例:

a <- c(1,3,2,4,1,5,2,3)
f(a)
[1] 1 2 3 4 4 5 5 5
Run Code Online (Sandbox Code Playgroud)

r cumsum

4
推荐指数
1
解决办法
212
查看次数

在达到特定值时重置cumsum

我想重置cumsum一个向量,因为它达到了一定的值.

例如,对于以下向量:

v <- c(3, 5, 2, 5, 3, 4, 5, 3, 1, 4)
Run Code Online (Sandbox Code Playgroud)

预期产量是:

c(0, 0, 10, 0, 0, 22, 0, 30, 0, 0)
Run Code Online (Sandbox Code Playgroud)

随着reset <- 10我的任务减少到完整整后标记的第一值:

res <- cumsum(v)
resd <- res/reset
resd
# [1] 0.3 0.8 1.0 1.5 1.8 2.2 2.7 3.0 3.1 3.5
Run Code Online (Sandbox Code Playgroud)

预期产量是这样的:

c(F, F, T, F, F, T, F, T, F, F) # or 
c(0, 0, 1.0, 0, 0, 2.2, 0, 3.0, 0, 0)
Run Code Online (Sandbox Code Playgroud)

我需要一种快速的方法来计算其中一种.

performance grouping r cumsum

4
推荐指数
1
解决办法
443
查看次数

跨列而不是行的累积总和

我有一个data.table dt如下。

df <- data.frame(t1 = rep(0,5), t3 = c(12, 5, 8,9, 5), t7= c(25, 48, 7, 9, 14))
dt <- setDT(df)
dt
   t1 t3 t7
1:  0 12 25
2:  0  5 48
3:  0  8  7
4:  0  9  9
5:  0  5 14
Run Code Online (Sandbox Code Playgroud)

我想获得各列的累计总和。我只是把它跨行。如何做到这一点data.table

dt[, 1:3 := cumsum(dt)]
dt
   t1 t3  t7
1:  0 12  25
2:  0 17  73
3:  0 25  80
4:  0 34  89
5:  0 39 103
Run Code Online (Sandbox Code Playgroud)

所需的输出如下: …

r cumsum data.table

4
推荐指数
1
解决办法
736
查看次数

从结尾到开头计算cumsum

我正在尝试计算cumsum从每一组的最后一行到第一行的起点.

样本数据:

t1 <- data.frame(var = "a", val = c(0,0,0,0,1,0,0,0,0,1,0,0,0,0,0))
t2 <- data.frame(var = "b", val = c(0,0,0,0,1,0,0,1,0,0,0,0,0,0,0))
ts <- rbind(t1, t2)
Run Code Online (Sandbox Code Playgroud)

所需格式(按分组var):

ts <- data.frame(var = c("a", "a", "a", "a", "a", "a", "a", "a", "a", "a", "a", "a", "a", "a", "a",
                           "b", "b", "b", "b", "b", "b", "b", "b", "b", "b", "b", "b", "b", "b", "b"), 
                 val = c(2,2,2,2,2,1,1,1,1,1,0,0,0,0,0,2,2,2,2,2,1,1,1,0,0,0,0,0,0,0))
Run Code Online (Sandbox Code Playgroud)

reverse r cumsum

4
推荐指数
1
解决办法
209
查看次数

从python中的最后一个非零条目计算累积总和

我有一个数字序列,例如[0,0,0,0,1,1,1,0,0,1,1,0]。我想根据最近的非零值来计算数字总和。即,一旦出现零输入,则总和将重置为零。

input: [0,0,0,0,1,1,1,0,0,1,1,0]
output:[0,0,0,0,1,2,3,0,0,1,2,0] 
Run Code Online (Sandbox Code Playgroud)

是否有内置的python函数能够实现这一目标?还是更好的无循环计算方式?

python numpy pandas cumsum

4
推荐指数
1
解决办法
139
查看次数