функция cumsum () выведет совокупную сумму для данного столбца. От numpy.
df[‘sum’] = df[‘qtd’].cumsum()
Хорошо. Если вы хотите извлечь только фрагмент и cal c cumsum (), вы можете использовать:
start_date = '2018-01-01'
end_date = '2018-05-01'
between = (df['date'] >= start_date) & (df['date'] <= end_date)
df2 = df[between]
df2['sum'] = df2['qtd'].cumsum()
df2
prod date qtd sum
0 proda 2018-01-01 2 2
1 proda 2018-02-01 2 4
2 proda 2018-04-01 1 5
3 proda 2018-05-01 4 9
Или, если вы хотите вычислить его только между указанными c датами и добавить его в свой data frame, вы можете использовать:
start_date = '2/1/18'
end_date = '6/1/18'
def total(start, end, df):
sum_col = []
for i in range(df.shape[0]): # Loop for all lines
if df['date'][i] < start:
# If before start date, NA (you could change to 0 too)
sum_col.append('NaN')
elif df['date'][i] == start: # start to sum
sum_col.append(df['qtd'][I])
#sum between your start and end dates
elif (df['date'][i] > start) and (df['date'][i] <= end):
sum_col.append(df['qtd'][i]+sum_col[i-1])
# after end date, it just adds NAs. You can change to repeat the last total
elif df['date'][i] > end:
sum_col.append('NaN')
return sum_col
df['sum'] = total(start_date, end_date, df)
df
output:
prod date qtd sum
0 proda 1/1/18 2 NaN
1 proda 2/1/18 2 2
2 proda 4/1/18 1 3
3 proda 5/1/18 4 7
4 proda 6/1/18 2 9
5 proda 7/1/18 1 NaN
Надеюсь, это поможет.