如何对Pandas多层级列DataFrame按一级列随机抽样并保留全部子列
解决方案
核心逻辑是按一级列整组选取,而非直接对所有二级列随机采样,实现步骤如下:
- 先提取当前DataFrame实际存在的所有一级列名
- 从一级列中随机抽取2个目标分组
- 按选中的一级列名直接索引DataFrame,会自动保留对应分组下的全部二级子列
可直接运行的代码
import random # 提取所有一级列名 level1_cols = df.columns.get_level_values(0).unique() # 随机抽取2个一级列 selected_level1 = random.sample(list(level1_cols), k=2) # 索引得到结果 result = df[selected_level1]
原代码错误原因
你之前使用df.sample(n=5, axis=1)是把所有二级列当做独立个体抽取,没有遵循一级列的分组筛选逻辑,因此会返回零散的子列。
内容的提问来源于stack exchange,提问作者Kim Yejun
相关产品推荐
相关产品推荐

