对Pandas系列执行基于布尔逻辑的运算[重复]

ryoqjall  于 2023-03-11  发布在  其他
关注(0)|答案(1)|浏览(92)

此问题在此处已有答案

Cumulative sum in amortization table python?(1个答案)
昨天关门了。
我想解决一个问题。我有一个Pandas系列:

delta
id     len
0      122
1       88
2       86
3      202
4       87
5      117
6      170
7      163
8       68
9       17
10      99
11     132
12      42
13      34
14      53
15      69
16      32
17      39
18      30
19      51
20       7
21      40
22       6
23      18
25      92
27       3
28       5
29       6
31      23
32      25
33      23
34      21
35      13
36      30
37      16
38      19
40      38
43       7
44       5
45      10
46       9
49       4
50      17
51      18
53       3
56       9
57      28
72       8
76      17
84       5
95      20
113     14
131     26
150      7
180     27
Name: delta, dtype: int64

我基本上想做的是
等于0 id的lens值的总和
等于0或1 id的lens值之和
等于0或1或2 ID的LENS值之和等等。
我的问题是,我可以得到每个id的透镜之和,比如0 = 122,1 = 210等等,但是我找不到一种方法来对id进行OR运算,我找不到解的部分等于x或y,并且在id的范围内递增。
我真的很感谢你的帮助或任何提示和建议,你可能有!

kmynzznz

kmynzznz1#

确保您的ID已排序,然后计算cumsum

out = df.set_index('id').sort_index().cumsum()

或者:

out = df.sort_values(by='id').assign(len=lambda d: d['len'].cumsum())

输出:

id   len
0     0   122
1     1   210
2     2   296
3     3   498
4     4   585
5     5   702
6     6   872
7     7  1035
8     8  1103
...
51  113  2260
52  131  2286
53  150  2293
54  180  2320

相关问题