我必须计算下面的累加和。A应为空。B应该是原样,c应该是31 + 30 = 61,前一项和当前项的添加,D= 61 + 31 = 92,依此类推。
数据:
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我需要如下的预期输出:
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发布于 2019-06-15 23:27:47
我觉得你需要
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发布于 2019-06-16 00:13:06
如果您使用iloc来完成偏移,则不需要向后移动,因为Pandas将对齐索引。
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创建新列。
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.0https://stackoverflow.com/questions/56611648
复制相似问题