Paul
Paul

Reputation: 23

Adding a column as sum of another columns with a condition

I need to write a code to create the new column B embedding the cumsum of the first column A.

When the cumsum value is < 0, then the value in B should be 0.

Then cumsum starts again until next value <0.

I search similar answer but I was not able to find an answer fitting my case. Thanks for your help.

A       B
1       1
3       4
5       9
7       16
-6      10
-8      2
-10     *0*
6       6
-15     *0*
11      11

Upvotes: 1

Views: 52

Answers (2)

Ted Petrou
Ted Petrou

Reputation: 61947

Here is a non-Pandas answer that iteratively loops through the values in column A and creates column B by never going below 0.

result = []
cur_res = 0
for i in df.A:
    cur_res = max(cur_res + i, 0)
    result.append(cur_res)

df['B'] = result

Upvotes: 1

sabbahillel
sabbahillel

Reputation: 4425

Set up a loop over A and have the total. If the total is less than 0 then set it to 0. Then append the new total to B

You have a A = [ 1, ...,], total = 0, B = []

total = 0
B = []
for i in range(len(A)):
   # process the sum
    total += A[i]
    if total < 0:
        total = 0
    B.append(total)

Upvotes: 1

Related Questions