У меня есть df с MultiIndex
из (id, date)
, и я хотел бы сделать 2 вещи:
преобразовать DateTimeIndex
с именем date
в PeriodIndex
в каждой id
группе
resample
частота от PeriodIndex
до месячной с дневной
Мой текущий (не-работающий) метод состоит в том, чтобы (даже до преобразования в PeriodIndex
):
df = pd.DataFrame(data = {"val": np.arange(30),
"id": np.tile([1,2], 15),
"date": np.repeat(pd.date_range(start = "2000-01-01", periods = 15, name="date"), 2)
})
df = df.set_index(["id", "date"]).sort_index()
df.groupby("id")["val"].resample(rule = "M", closed = "right", label = "right").apply(lambda x: np.sqrt(sum(x)/10))
Это приводит к:
TypeError: Only valid with DatetimeIndex, TimedeltaIndex or PeriodIndex, but got an instance of 'MultiIndex'
Как правильно выполнить всю процедуру?Я немного озадачен тем, как думать о groupby
: моя ментальная модель такова, что все, что следует за операцией groupby
, получит только подкадр, соответствующий этой группе (то есть MultiIndex
становится единичным индексом просто date
в этой конкретной группе).Разве это не правильно?