Я пытался выяснить, возможно ли это с помощью функций Pandas Grouper и Cumulative Sum, однако я не смог найти способ. Это возможно с жесткой границей в конце часа, например. если вы хотите сбросить сумму в 7:00, а не в 7:15, но не так, как вы хотели. Может быть, кто-то может предложить на этих линиях. Между тем, простое решение с большим количеством кода Python.
Я добавил несколько комментариев, чтобы помочь вам понять это, также предполагается, что вы храните свои данные в DataFrame, а столбец Date установлен как Date, а не как string. В противном случае вам может понадобиться преобразовать строки в дату в цикле ниже.
#Get the first Date and hold its reference
lastDate = dataset.iat[0,0]
#Initialize the sum to 0
cumulativeSum = 0
for i in dataset.index:
#Find the time difference between this row and the last held Date
dateDiff = dataset.at[i, 'Date'] - lastDate
if dateDiff.total_seconds() > 3600:
#If the difference is more than 60Min then we reset the sum also hold this date as the last reference date
cumulativeSum = 0
lastDate = dataset.at[i, 'Date']
#Add the current value to cumulative sum and store it in our new field
cumulativeSum = cumulativeSum + dataset.at[i, 'Value']
dataset.at[i, 'NewX'] = cumulativeSum
print(dataset)