Вам потребуется сначала извлечь серию для дальнейших вычислений, потому что ROOT, буст-гистограмма или любой другой инструмент не будут знать о субиндексировании Pandas. Это можно сделать следующим образом:
mu_cells_side = frame.mu_cells_side.xs(0, level='subentry')
Теперь вы можете использовать .FillN(len(mu_cells_side), mu_cells_side, ROOT.nullptr)
TH1's или заполнение гистограммы или NumPy, так как это нормальный массив на данный момент (и вы можете свободно вызывать mu_cells_side = np.asarray(mu_cells_side)
если кого-то из них волнует, что это настоящий массив np, но я не думаю, что это так). Это будет намного быстрее, чем попытка l oop в Python.
Наличие MWE было бы полезно для настройки аналогичного DataFrame:
import pandas as pd
indarr = [[0, 0, 1, 1, 2, 2, 2, 3],
[0, 1, 0, 1, 0, 1, 2, 0]]
ind = pd.MultiIndex.from_tuples(list(zip(*indarr)), names=['entry', 'subentry'])
f = pd.DataFrame({"mu_cells_side":[2,2,3,3,1,1,1,8] , "mu_cells_tower":[1,2,3,4,5,6,7,8]}, index=ind)