标签: cumsum

Numpy 带符号的 cumsum 沿轴的最大幅度

我有一个 numpy 数组aa.shape=(17,90,144). 我想找到 的每列的最大值cumsum(a, axis=0),但保留原始符号。换句话说,如果对于给定列,a[:,j,i]的最大值cumsum对应于负值,我想保留减号。

该代码np.amax(np.abs(a.cumsum(axis=0)))获取了大小,但不保留符号。相反,使用它np.argmax可以获得我需要的索引,然后我可以将其插入到原始cumsum数组中。但我找不到一个好的方法来做到这一点。

下面的代码可以工作,但是很脏而且很慢:

max_mag_signed = np.zeros((90,144))
indices = np.argmax(np.abs(a.cumsum(axis=0)), axis=0)
for j in range(90):
    for i in range(144):
        max_mag_signed[j,i] = a.cumsum(axis=0)[indices[j,i],j,i]
Run Code Online (Sandbox Code Playgroud)

必须有一种更干净、更快的方法来做到这一点。有任何想法吗?

python arrays numpy multidimensional-array cumsum

3
推荐指数
1
解决办法
900
查看次数

Pandas Dataframe cumsum 按行逆列顺序排列?

有没有更优雅的方法来实现这一目标?我目前基于各种stackoverflow答案的解决方案如下

df = pds.DataFrame([[11,12,13,14],[15,16,17,18]], columns = [0,1,2,3])  
print df  
dT = df.T  
dT.reindex(dT.index[::-1]).cumsum().reindex(dT.index).T  
Run Code Online (Sandbox Code Playgroud)

输出

df is:
    0   1   2   3  
0  11  12  13  14  
1  15  16  17  18  

after by row reverse cumsum
    0   1   2   3
0   50  39  27  14  
1   66  51  35  18  
Run Code Online (Sandbox Code Playgroud)

我必须经常对我的数据执行此操作(大小也更大),并尝试找出一种更短/更好的方法来实现这一目标。

谢谢

python dataframe pandas cumsum

3
推荐指数
1
解决办法
3930
查看次数

具有初始值的 Pandas cumsum

因此,给出以下单列数据框:

from pandas import DataFrame
df = DataFrame({0: {'10/10/2012': 50, '10/11/2012': -10, '10/12/2012': 100})

In [3]: df
Out[3]: 
              0   
10/10/2012   50   
10/11/2012  -10  
10/12/2012  100  
Run Code Online (Sandbox Code Playgroud)

我想为给定列创建累积和,但给累加器一个初始值。因此,对于上面的数据帧,初始值为 100,这将如下所示:

              0  1 
10/10/2012   50  150 
10/11/2012  -10  140
10/12/2012  100  240
Run Code Online (Sandbox Code Playgroud)

任何帮助,非常感谢。

python pandas cumsum

3
推荐指数
1
解决办法
3264
查看次数

cumsum()在几列上

我想创建以下数据帧:

Index       A        B        C
 a          0        0        0
 b          1       10        0
 c         -1        0      -10
 d          1       20        0
 e          0        0        0
 f         -1        0      -20
 g          0        0        0
 h          1       15        0
 i         -1        0      -15
Run Code Online (Sandbox Code Playgroud)

AB给出.C应通过函数生成,无需迭代.可能就是这种方式:

def generate_C():
    C = np.where(A == -1, << here prior value from B * -1 >>, 0)
    df['C] = C
    return df
Run Code Online (Sandbox Code Playgroud)

我尝试通过cumsum()在列上B,C但没有走远.有什么建议吗?

python dataframe pandas cumsum

3
推荐指数
1
解决办法
182
查看次数

使用 dplyr 对分组数据进行 cumsum

我有一个数据框df(可以在此处下载)引用公司登记册,如下所示:

    Provider.ID        Local.Authority month year entry exit total
1  1-102642676           Warwickshire    10 2010     2    0     2
2  1-102642676                   Bury    10 2010     1    0     1
3  1-102642676                   Kent    10 2010     1    0     1
4  1-102642676                  Essex    10 2010     1    0     1
5  1-102642676                Lambeth    10 2010     2    0     2
6  1-102642676            East Sussex    10 2010     5    0     5
7  1-102642676       Bristol, City of    10 2010     1    0     1
8  1-102642676              Liverpool    10 2010     1    0     1
9 …
Run Code Online (Sandbox Code Playgroud)

r cumsum dplyr

3
推荐指数
1
解决办法
3235
查看次数

从条件开始计算行数

我在 Pandas 中有一个包含布尔值的列,并且想要计算自最后一个 True 值以来的 thr 行,如下所示:

a           b
False       0
True        0
False       1
False       2 
False       3  
True        0
False       1
True        0
Run Code Online (Sandbox Code Playgroud)

我可以通过循环来完成,但似乎必须有更好的方法

python boolean pandas cumsum

3
推荐指数
1
解决办法
482
查看次数

pandas 中的累积总和以零开始,以除最后一个条目之外的所有组的总和结束

在下面的数据框中,我想创建一个新列C,该列将是该列中每个组的累积总和,但这些总和必须从零开始,并且仅添加值,直到该组的倒数第二个条目。BA

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

所以,我的结果应该是:

  A B C
0 1 5 0
1 1 6 5
2 2 3 0
3 2 4 3
4 2 5 7
5 3 2 0
5 3 7 2
6 4 3 0
Run Code Online (Sandbox Code Playgroud)

(我认为这个问题非常明显,但不知怎的,我自己无法弄清楚,也无法在任何地方看到它。)

python pandas cumsum pandas-groupby

3
推荐指数
1
解决办法
2178
查看次数

在NA之后重新开始

我有一个包含多列的数据框.对于一列,我想计算累积总和,但我有一些缺少值的问题.

#sample data
test <- c(-1.2, 4.6, -8.3, 5, 8, 1, -2, NA, NA, NA, -3, 5.1, 1.9)
test <- as.data.frame(test)

#This gives NA after NAs occurred
sum_test <- lapply(test, FUN=cumsum)

sum_test
$test
 [1] -1.2  3.4 -4.9  0.1  8.1  9.1  7.1   NA   NA   NA   NA   NA   NA

#This continues with adding to pre-NA value after last NA
sum_test <- lapply(test, function(x) ave(x, is.na(x), FUN=cumsum))

sum_test
$test
 [1] -1.2  3.4 -4.9  0.1  8.1  9.1  7.1   NA   NA   NA  4.1  9.2 11.1 …
Run Code Online (Sandbox Code Playgroud)

r cumsum

2
推荐指数
1
解决办法
938
查看次数

Pandas列名称的最大单元格值

我有一个df,在最左边的列中有一些代码,在其他列中有一个前向轮廓(下面的df1)

DF1:

   code        tp1        tp2        tp3        tp4        tp5       tp6  \
0  1111   0.000000   0.000000   0.018714   0.127218   0.070055  0.084065   
1   222   0.000000   0.000000   0.000418   0.000000   0.017540  0.003015   
2   333   1.146815   1.305678   0.384918   0.688284   0.000000  0.000000   
3   444   0.000000   0.000000   1.838797   0.000000   0.000000  0.000000   
4   555  27.190002  27.134837  24.137560  17.739465  11.990806  8.631395   
5   666   0.000000   0.000000   0.000000   0.000000   0.000000  0.000000   

        tp7        tp8        tp9       tp10  
0  0.019707   0.000000   0.000000   0.000000  
1  6.594860  10.535905  15.697232  21.035824  
2  0.000000   0.000000   0.000000   0.000000  
3  0.000000   0.000000 …
Run Code Online (Sandbox Code Playgroud)

python max dataframe pandas cumsum

2
推荐指数
1
解决办法
558
查看次数

pandas:cumsum忽略前两行

我有一个数据框,其中包含以下列:

|---------------------| 
|          A          |
|---------------------|
|           0         |
|---------------------|
|         2.63        |
|---------------------|
|         7.10        |
|---------------------|
|         5.70        |
|---------------------|
|         6.96        |
|---------------------|
|         7.58        |
|---------------------|
|         3.3         |
|---------------------|
|         1.93        |
|---------------------|
Run Code Online (Sandbox Code Playgroud)

我需要得到累积总和,但这一点有点特别.第一个元素应该是0,以下是从前一列开始的累积和,所以在这种情况下我需要生成:

|---------------------| 
|          B          |
|---------------------|
|           0         |
|---------------------|
|           0         |
|---------------------|
|         2.63        |
|---------------------|
|         9.73        |
|---------------------|
|        15.43        |
|---------------------|
|        22.39        |
|---------------------|
|        29.97        |
|---------------------|
|        33.27        |
|---------------------|
Run Code Online (Sandbox Code Playgroud)

我知道当没有我要求的条件时很容易实现:

df['B'] = df.A.cumsum() …
Run Code Online (Sandbox Code Playgroud)

python dataframe pandas cumsum

2
推荐指数
1
解决办法
1085
查看次数