Используйте np.random.choice
и выберите 2 случайных уровня из df.index.levels[0]
.Затем вы можете использовать выбранные уровни для индексации в df
, используя df.loc
.
df
feature_1 feature_2
ID_1 ID_2
1 1 0 0
2 1 1
2 1 1 1
2 0 1
3 1 1 1
2 0 1
4 1 1 1
2 0 1
# np.random.seed(0) # Uncomment to make results reproducible.
df.loc[np.random.choice(df.index.levels[0], 2, replace=False)]
feature_1 feature_2
ID_1 ID_2
3 1 1 1
2 0 1
4 1 1 1
2 0 1
Если вам нужно сделать то же самое для первого уровня, используйте pd.IndexSlice
для нарезки напервый уровень.
v = np.random.choice(df.index.levels[1], 2, replace=False)
df.loc[pd.IndexSlice[:, v], :]
# df.loc(axis=0)[pd.IndexSlice[:, v]]