首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >CUMSUM添加如下

CUMSUM添加如下
EN

Stack Overflow用户
提问于 2019-06-15 23:17:47
回答 2查看 30关注 0票数 0

我必须计算下面的累加和。A应为空。B应该是原样,c应该是31 + 30 = 61,前一项和当前项的添加,D= 61 + 31 = 92,依此类推。

数据:

代码语言:javascript
复制
    0   1   cumsum

1   A   31  
2   B   31  31
3   C   30  61
4   D   31  92
5   E   30  122
6   F   31  153
7   G   31  184
8   H   30  214
9   I   31  245
10  J   30  276

my code: 
data['cumsum'] = data[1].cumsum() 
data

    0   1   cumsum
1   A   31  31
2   B   31  61
3   C   30  92
4   D   31  122
5   E   30  153
6   F   31  184
7   G   31  214
8   H   30  245
9   I   31  276
10  J   30  306

我需要如下的预期输出:

代码语言:javascript
复制
0   1   cumsum

1   A   31  
2   B   31  31
3   C   30  61
4   D   31  92
5   E   30  122
6   F   31  153
7   G   31  184
8   H   30  214
9   I   31  245
10  J   30  276

my code: 
data['cumsum'] = data[1].cumsum() 
data
EN

回答 2

Stack Overflow用户

发布于 2019-06-15 23:27:47

我觉得你需要

代码语言:javascript
复制
df['1'].shift(-1).cumsum().shift(1)

1       NaN
2      31.0
3      61.0
4      92.0
5     122.0
6     153.0
7     184.0
8     214.0
9     245.0
10    275.0
Name: 1, dtype: float64
票数 3
EN

Stack Overflow用户

发布于 2019-06-16 00:13:06

如果您使用iloc来完成偏移,则不需要向后移动,因为Pandas将对齐索引。

代码语言:javascript
复制
df.iloc[1:, 1].cumsum()

2      31
3      61
4      92
5     122
6     153
7     184
8     214
9     245
10    275
Name: 1, dtype: int64

然后使用assign创建新列。

代码语言:javascript
复制
df.assign(cumsum=df.iloc[1:, 1].cumsum())

    0   1  cumsum
1   A  31     NaN
2   B  31    31.0
3   C  30    61.0
4   D  31    92.0
5   E  30   122.0
6   F  31   153.0
7   G  31   184.0
8   H  30   214.0
9   I  31   245.0
10  J  30   275.0
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/56611648

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档