随机抽样多级列

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)]