'COUNTIFS: Excel to pandas and remove counted elements

I have a COUNTIFS equation in excel (COUNTIFS($A$2:$A$6, "<=" & $C4))-SUM(D$2:D3) where A2toA6 is my_list. C4 is current 'bin' with the condition and D* are previous summed results from my_list that meet the condition. I am attempting to implement this in Python

I have looked at previous COUNTIF questions but I am struggling to complete the final '-SUM(D$2:D3)' part of the code. See the COUNTIFS($A$2:$A$6, "<=" & $C4) section below.

'''

my_list=(-1,-0.5, 0, 1, 2)
bins = (-1, 0, 1)
out = []

for iteration, num in enumerate(bins):
    n = []
    out.append(n)
    count = sum(1 for elem in my_list if elem<=(num))
    n.append(count)

print(out)

''' out = [1, [3], [4]]

I need to sum previous elements, that have already been counted, and remove these elements from the next count so that they are not counted twice ( Excel representation -SUM(D$2:D3) ). This is where I need some help! I used enumerate to track iterations. I have tried the code below in the same loop but I can't resolve this and I get errors:

'''

count1 = sum(out[0:i[0]]) for i in (out)

and

count1 = out(n) - out(n-1)

''''

See expected output values in 'out' array for bin conditions below:

enter image description here



Solution 1:[1]

I was able to achieve the required output array values by creating an additional if/elif statement to factor out previous array elements and generate a new output array 'out1'. This works but may not be the most efficient way to achieve the end goal:

'''

import numpy as np

my_list=(-1,-0.5, 0, 1, 2)
#bins = np.arange(-1.0, 1.05, 0.05)
bins = (-1, 0, 1)
out = []
out1 = []

for iteration, num in enumerate(bins):
    count = sum(1 for elem in my_list if elem<=(num))
    out.append(count)
    if iteration == 0:
        count1 = out[iteration]
        out1.append(count1)
    elif iteration > 0:
        count1 = out[iteration] - out[iteration - 1]
        out1.append(count1)

print(out1)

'''

I also tried using the below code as suggested in other answers but this didn't work for me:

'''

-np.diff([out])
print(out)

'''

Sources

This article follows the attribution requirements of Stack Overflow and is licensed under CC BY-SA 3.0.

Source: Stack Overflow

Solution Source
Solution 1 smcgiv