python - 对多级列进行随机采样

标签 python pandas dataframe random multi-level

级别列 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

我想要的是在“固体”、“液体”和“气体”中随机选择 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

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

最佳答案

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

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

或者使用random.sample函数:

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

关于python - 对多级列进行随机采样,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/69055310/

相关文章:

python生成xml

Python 有选择地替换字符串中的字符

python - Pandas,根据多列使用下一个条件值填充单元格

python - 如何将多列初始化为现有的 pandas DataFrame

python - Panda dataframe groupby 和回归计算

python - 系列的真值是不明确的。使用 a.empty、a.bool()、a.item()、a.any() 或 a.all()

python - 我们可以将条件参数传递给 pytest 中的 fixture 函数吗?

python - 如何在网页中连续显示python输出?

python - 计算 Pandas 中分组数据的权重

python - 将随机变量传递给 agg 函数 python