Я бы хотел посчитать вхождения "1" в нарезанный массив "col3".
"y = (arr [row-x: row2]). Sum ()" - это всего лишь пример выполнения кодов! Здесь я получаю что-то вроде:
"y = (arr [row-x: row, 2]). Count (1)" для подсчета массива динамических c строки 2, как часто "1" произошло.
#Stackoverflow example
from numba import njit
import pandas as pd
d = {'col1': [20, 23, 25, 44, 46, 47, 48, 49, 50, 50, 52, 55, 56, 69, 70],
'col2': [39, 32, 42, 50, 63, 67, 64, 68, 68, 74, 59, 75, 58, 71, 66],
'col3': [1, 1, 1, 2, 2, 2, 1, 1, 1, 2, 2, 2, 1, 1, 1]}
df = pd.DataFrame(data=d)
df["overlap_count"] = 0 #create new column
df["count"] = 0 #create new column
n = 3 #if x >= n, then value = 0
n1 = 2
a = df[['col1','col2','col3','overlap_count', 'count']].values
@njit
def custom_sum(arr, n):
for row in range(arr.shape[0]):
x = (arr[0:row, 1] > arr[row, 0]).sum()
y = (arr[row-x:row, 2]).sum()
#y = (arr[row-x:row, 2]).count(1) #this is what I tried!
arr[row, 3] = x+1
arr[row, 4] = y+1
if x >= n:
arr[row, 1] = 0
arr[row, 3] = 0
if y >= n1:
arr[row, 4] = 0
return arr
df1 = pd.DataFrame(custom_sum(a, n), columns=df.columns)
print (df1)
Я получаю в столбце «count», например в столбце «count»
строка 0 = 1, строка 1 = 2, строка 2 = 0 (поскольку более 2 (n1) случаев)