У меня есть многоиндексный столбец.Более высокий уровень - это некоторые люди, подуровень - это некоторые меры.Я хотел бы создать несколько новых столбцов, которые являются производными от мер (например, скользящее среднее).Я надеялся, что смогу использовать индексную нарезку для достижения этой цели, но, увы, сейчас.В прошлом я нашел несколько похожих вопросов, но это были старые вопросы, и я подозреваю, что есть более современные, питонные решения.
Ниже приведен игрушечный пример, где я демонстрирую, что я пытаюсь сделать для одного столбца (который работает), но показывает, что тот же метод завершается ошибкой, если я пытаюсь применить его ко всем группам вложенных столбцов.
index = pd.DatetimeIndex(start='2018-1-1',periods=5,freq="M")
persons = ['mike', 'dave', 'matt']
measures = ['spin', 'drag', 'bezel']
cols = pd.MultiIndex.from_product([persons, measures],names=['human', 'measure'])
xf = pd.DataFrame(index=index, data=np.random.rand(5,9), columns=cols)
idx = pd.IndexSlice
#Doing this to one specific column works
xf.loc[:,idx['mike','bezel']].rolling(window=2).mean()
xf.loc[:,idx['mike','roll']] = xf.loc[:,idx['mike','bezel']].rolling(window=2).mean()
#Trying to create a 'roll2' measure for all the humans (mike, dave,matt) doesn't work
xf.loc[:,idx[:,'roll2']] = "placeholder" #xf.loc[:,idx['mike','bezel']].rolling(window=2).mean()
xf