mat['total'] = mat.apply(lambda row: mat[
(mat['Market'] == row['Market']) &
(mat['Brand'] == row['Brand']) &
(mat['Category'] == row['Category']) &
(mat['Facts'] == row['Facts']) &
(mat['Rolling Type'] == row['Rolling Type']) &
(mat['Flag'] == row['Flag']) &
(mat['Date'] <= row['Date']) &
(mat['Date'] >= (row['Date'] - relativedelta(months= 11)))]['value'].sum() , axis = 1)
Приведенный выше код дает мне точный вывод, который я хочу.И я хочу сделать это с помощью groupby (я думаю, что это будет эффективный способ)
У меня есть этот dataframe (mat), где для каждой строки в фрейме данных отфильтровываю dataframe с похожими результатами строки и проверяюесли дата находится между текущей датой и 12 месяцами до даты с добавлением всех отфильтрованных результатов.
Ищете эффективный способ сделать это?Может быть, с помощью группового?
mat.groupby(['Market', 'Brand', 'Category', 'Facts', 'Rolling Type', 'Flag']).transform('sum')
Единственное, что меня смущает, - это как фильтровать диапазон дат здесь!