首页 > 解决方案 > 随机抽样多级列

问题描述

看起来像这样的级别列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

谁能帮我解决这个问题?谢谢 :)

标签: pythonpandasdataframerandommulti-level

解决方案


您可以对第一级列进行采样,然后选择采样列:

df[pd.Series(df.columns.levels[0]).sample(2)]

或使用以下random.sample功能:

import random
df[random.sample(df.columns.levels[0].tolist(),2)]

推荐阅读