Представьте, что у вас есть список словарей:
lst = [{'id': 1, 'upload_date': '05-01-2019'}, {'id': 1, 'upload_date': '06-01-2019'}, {'id': 1, 'upload_date': '08-02-2020'}, {'id': 2, 'upload_date': '08-04-2019'}, {'id': 3, 'upload_date': '06-01-2019'}]
Вывод списка словарей:
[{'id': 1, 'upload_date': '05-01-2019'},
{'id': 3, 'upload_date': '06-02-2019'},
{'id': 1, 'upload_date': '06-01-2019'},
{'id': 1, 'upload_date': '08-02-2020'},
{'id': 2, 'upload_date': '08-04-2019'}]
Я хочу сгруппировать список словарей по идентификатору, а затем для каждого идентификатора создать график времени с 1 января 2019 года по март 2020 года. Затем для каждого месяца в пределах этого графика времени я хочу подсчитать, сколько раз произошел месяц.
До сих пор мне удавалось создать месячный график времени между этими двумя датами с помощью:
timeline = pd.date_range('01-01-2019','03-01-2020', freq='MS').strftime("%m-%Y").tolist()
Выходная временная шкала:
['01-2019', '02-2019', '03-2019', '04-2019', '05-2019', '06-2019', '07-2019', '08-2019', '09-2019', '10-2019', '11-2019', '12-2019', '01-2020', '02-2020', '03-2020']
Итак, желаемый вывод должен быть примерно таким:
1 : ['01-2019': 2, '02-2019': '0', '03-2019': 0, '04-2019': 0, ......... ,'02-2020': 1]
2 : ['01-2019': 0, '02-2019': '0', '03-2019': 0, '04-2019': 1, ......... ,'02-2020': 0]
3 : ['01-2019': 0, '02-2019': '1', '03-2019': 0, '04-2019': 0, ......... ,'02-2020': 0]