嗨,我有一个如下所示的多索引数据框,我想根据ID_1随机选择该数据框的一部分:
下面是我的数据框
ID_1 ID_2 feature_1 feature_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
,我想从4个ID_1中选择2个。示例结果:
ID_1 ID_2 feature_1 feature_2
2 1 1 1
2 0 1
4 1 1 1
2 0 1
什么是最好的方法。谢谢。
答案 0 :(得分:1)
使用np.random.choice
并从df.index.levels[0]
中随机选择2个级别。然后,您可以使用选定的级别通过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]]