У меня есть следующий фрейм данных:
dataframe = pd.DataFrame({'date':pd.to_datetime(['2018-05-27', '2018-05-27','2018-05-28','2018-06-1']),
'code': ['1', '1', '1', '2']})
dataframe
date code
0 2018-05-27 1
1 2018-05-27 1
2 2018-05-28 1
3 2018-06-01 2
И я хочу:
dataframe = pd.DataFrame({'date':pd.to_datetime(['2018-05-27', '2018-05-28','2018-05-29','2018-05-30','2018-05-31', '2018-06-1']),
'1': [2, 1, 1, 0, 0, 0],
'2': [0, 0, 0, 0, 0, 1]})
dataframe
date 1 2
0 2018-05-27 2 0
1 2018-05-28 1 0
2 2018-05-29 0 0
3 2018-05-30 0 0
4 2018-05-31 0 0
5 2018-06-01 0 1
Моя первая попытка:
dataframe.groupby([dataframe['code'], dataframe['date'].dt.month.rename('month'), dataframe['date'].dt.day.rename('day')]).agg({"count"})
code month day date count
1 5 27 2
28 1
2 6 1 1
Но у меня две проблемы: (1) дата больше не в формате даты и (2) я не знаю, как ее транспонировать. Я боролся с временными рядами панд и агрегатными функциями, но без особого успеха. Я также хотел бы иметь это только месяцами. Есть идеи, как поступить?
Я уже проверил следующие вопросы StackOverflow. Здесь и
здесь но не совсем то же самое.