Использование -
indices = df.index.levels[0]
train_indices = np.random.choice(indices,size=int(len(indices)*0.75), replace=False)
test_indices = np.setdiff1d(indices, train_indices)
train = df[np.in1d(df.index.get_level_values(0), train_indices)]
test = df[np.in1d(df.index.get_level_values(0), test_indices)]
Выход
Поезд
Feature_1
Month Day
January 1 10
2 20
February 1 30
2 40
March 1 50
2 60
3 70
Тест
Feature_1
Month Day
April 1 80
2 90
Пояснение
indices = df.index.levels[0]
берет все уникальные из level=0
индекса - Index(['April', 'February', 'January', 'March'], dtype='object', name='Month')
train_indices = np.random.choice(indices,size=int(len(indices)*0.75), replace=False)
выборки 75%из индексов, выбранных на предыдущем шаге
Далее мы получаем оставшиеся индексы равными test_indices
Наконец мы разбиваем поезд и тестируем соответственно