У меня есть pivot_table
сгенерированный DataFrame
с одним индексом для его строк и MultiIndex
для его столбцов.Верхний уровень MultiIndex
- это имя данных, по которым я выполняю вычисления, а второй уровень - это ДАТА этих данных.Значения являются результатом этих расчетов.Это выглядит так:
Imgur link - моя репутация недостаточно высока для публикации встроенных изображений
Я пытаюсь сгруппировать эти данные по кварталам (например, Q42018)вместо каждого дня (собственный формат данных).
Я нашел эту запись, которая использует PeriodIndex и GroupBy для преобразования индекса дат в индекс кварталов / лет длябыть довольно элегантным и иметь больше смысла.
Проблема в том, что это решение для фрейма данных только с одним столбцом индекса.Я столкнулся с проблемой, пытаясь сделать это, потому что мои столбцы многоиндексные, и я не могу понять, как заставить его работать.Вот моя попытка:
bt = cleaned2018_df.pivot_table(index='Broker',
values=['Interaction Id','Net Points'],
columns='Date',
aggfunc={'Interaction Id':pd.Series.nunique,
'Net Points':np.sum},
fill_value=0)
pidx = pd.PeriodIndex(bt.columns.levels[1], freq='Q')
broker_qtr_totals = bt.groupby(pidx, axis=1, level=1).sum()
Как видите, я беру второй уровень MultiIndex
, содержащий все даты, и запускаю его через функцию PeriodIndex
, чтобы получитьназад индекс кварталов.Затем я передаю это PeriodIndex
в groupby и приказываю ему работать со столбцами и вторым уровнем, на котором находятся даты.
Возвращает ValueError
ответ Grouper and axis must be same length
.И я знаю, что причина в том, что значение pidx
, которое я передаю GroupBy, имеет длину x, тогда как ось столбца информационного кадра имеет длину 2x (так как 1-й уровень мультииндекса имеет 2 значения).
Я просто зациклен на том, как правильно применить это ко всему индексу.Кажется, я не могу понять это синтаксически, поэтому я хотел положиться на опыт сообщества, чтобы посмотреть, может ли кто-нибудь помочь мне.
Если мое объяснение не ясно, я с удовольствием уточню дальше.Заранее спасибо.