У меня есть следующий фрейм данных:
date 01/2018 01/2019 02/2018 ... 10/2017 11/2017 12/2017
id_x id_y id_x id_y id_x ... id_y id_x id_y id_x id_y
department ...
0 NaN NaN NaN NaN NaN ... NaN NaN NaN NaN NaN
1 149.0 NaN 112.0 4.0 103.0 ... NaN NaN NaN NaN NaN
799 NaN NaN NaN NaN NaN ... 3.0 80.0 NaN 79.0 2.0
Исходные данные имели даты с метками времени. Даты были преобразованы и сгруппированы по месяцам и годам только в моих выходных данных (затем повернуты).
Теперь у меня проблема в том, что интервалы, которые мне нужно агрегировать или составлять отчеты, являются собственными (основанными на вводе пользователем - они будутне всегда будет ежемесячно). Интервалы могут быть следующими:
-Месячный
-Годовой (календарный год)
-По циклу (год (12-месячный период), начинающийся с определенной даты)
-Полвека / 6 месяцев
-Quarterly
МИНИМАЛЬНЫЙ интервал всегда будет месяцами (он никогда не будет днями или временем). Максимальный интервал будет 12 месяцев (но не всегда календарный год). Так что, похоже, я бы хотел вернуть месяцы, которые у меня есть в настоящее время, а затем «свернуть их» в более длинные периоды по мере необходимости.
У меня есть функция, которая выводит список «начальных» дат, необходимых для каждогоинтервал.
def DefineIntervals(start_date, end_date, Interval = 0):
timeframes_mos = pd.date_range(start_date,end_date, freq='MS').strftime('%m/%Y').tolist()
timeframes_qtr = pd.date_range(start_date,end_date, freq='QS').strftime('%m/%Y').tolist()
timeframes_yrs = pd.date_range(start_date,end_date, freq='12MS').strftime('%m/%Y').tolist()
return timeframes_mos, timeframes_qtr, timeframes_yrs
Меня беспокоит вопрос о том, следует ли создавать новый фрейм данных с этими данными, а затем пытаться выполнить какое-либо объединение или просто передать переменную для вывода этого фрейма данных с необходимыми интервалами - в любом случае я должен добраться дожелаемый конечный результат, который должен сообщать о пользовательских интервалах, некоторые из которых могут быть годом, который длится с марта этого года до конца февраля следующего года.
Похоже, что следующие могут работать для агрегирования кадранеобходимо:
Timegrouper
https://pandas.pydata.org/pandas-docs/stable/reference/api/pandas.Grouper.html
Период
https://pandas.pydata.org/pandas-docs/stable/reference/api/pandas.Period.html
Cut
https://pandas.pydata.org/pandas-docs/stable/reference/api/pandas.cut.html
Resample
https://pandas.pydata.org/pandas-docs/stable/reference/api/pandas.DataFrame.resample.html
Я застрял в том, как действовать, и не уверен, какая наиболее эффективная функция используется (если есть что-либо из перечисленного выше), учитывая необходимость.