Я пытался дать вам воспроизводимый пример, но Period
не позволяет мне читать словарь как фрейм данных. Поэтому я просто преобразовал свой фрейм данных в словарь и скопировал сюда (если вы скажете мне, как сделать его воспроизводимым, я отредактирую это). Фрейм данных представляет собой серию (один столбец) и два индекса:
{(Period('2020-01', 'M'), False): 213,
(Period('2020-01', 'M'), True): 21,
(Period('2020-02', 'M'), False): 313,
(Period('2020-02', 'M'), True): 13,
(Period('2020-03', 'M'), False): 213,
(Period('2020-03', 'M'), True): 23,
(Period('2020-04', 'M'), False): 213,
(Period('2020-04', 'M'), True): 12,
(Period('2020-05', 'M'), False): 321,
(Period('2020-05', 'M'), True): 121,
(Period('2020-06', 'M'), False): 321,
(Period('2020-06', 'M'), True): 22,
(Period('2020-07', 'M'), False): 333,
(Period('2020-07', 'M'), True): 11}
Я пытаюсь создать второй столбец с процентами, сгруппированными за месяц (уровень индекса = 0). Я до сих пор достиг этого:
df["new_column"] = df.groupby(level=0).apply(lambda x: x/sum(x))
Ошибка:
DateParseError: Unknown datetime string format, unable to parse: new_columns
Кажется, что groupby не может распознать формат даты при присвоении процентов new_column
. Почему?