随机抽样多级列
Random Sampling a Multi-level column
级别列 DataFrame,如下所示:
df
Solid Liquid Gas
pen paper pipe water juice milk oxygen nitrogen helium
5 2 1 4 3 1 7 8 10
5 2 1 4 3 1 7 8 10
5 2 1 4 3 1 7 8 10
4 4 7 3 2 0 6 7 9
3 7 9 4 6 5 3 3 4
我想要的是在“Solid”、“Liquid”和“Gas”中随机选择 2 个列以及 3 个子列。
例如,如果随机选择固体和气体,预期结果应该是:
Solid Gas
pen paper pipe oxygen nitrogen helium
5 2 1 7 8 10
5 2 1 7 8 10
5 2 1 7 8 10
4 4 7 6 7 9
3 7 9 3 3 4
我试过这段代码,但没有得到相同的结果。
result = df.sample(n=5, axis=1)
result
[output]
Solid Gas
pipe oxygen
1 7
1 7
1 7
1 7
7 6
9 3
谁能帮我解决这个问题?谢谢:)
您可以对第一级列进行采样,然后 select 采样列:
df[pd.Series(df.columns.levels[0]).sample(2)]
或使用random.sample
函数:
import random
df[random.sample(df.columns.levels[0].tolist(),2)]
级别列 DataFrame,如下所示:
df
Solid Liquid Gas
pen paper pipe water juice milk oxygen nitrogen helium
5 2 1 4 3 1 7 8 10
5 2 1 4 3 1 7 8 10
5 2 1 4 3 1 7 8 10
4 4 7 3 2 0 6 7 9
3 7 9 4 6 5 3 3 4
我想要的是在“Solid”、“Liquid”和“Gas”中随机选择 2 个列以及 3 个子列。
例如,如果随机选择固体和气体,预期结果应该是:
Solid Gas
pen paper pipe oxygen nitrogen helium
5 2 1 7 8 10
5 2 1 7 8 10
5 2 1 7 8 10
4 4 7 6 7 9
3 7 9 3 3 4
我试过这段代码,但没有得到相同的结果。
result = df.sample(n=5, axis=1)
result
[output]
Solid Gas
pipe oxygen
1 7
1 7
1 7
1 7
7 6
9 3
谁能帮我解决这个问题?谢谢:)
您可以对第一级列进行采样,然后 select 采样列:
df[pd.Series(df.columns.levels[0]).sample(2)]
或使用random.sample
函数:
import random
df[random.sample(df.columns.levels[0].tolist(),2)]