如何在pandas中同时获取指定列与随机选取的其他列
pandas指定固定列+随机列选取方案
你可以先将固定需要保留的列单独拎出,再对剩余列做随机采样后拼接成最终的列名列表,再从数据框中选取即可。
完整实现示例
import pandas as pd import numpy as np # 构造测试数据框 df = pd.DataFrame(np.random.randn(5, 6), columns=['a', 'b', 'c', 'd', 'e', 'f']) # 1. 定义固定要选取的列 fixed_col = 'a' # 2. 排除固定列后获取剩余列名 rest_cols = df.columns.drop(fixed_col) # 3. 从剩余列中随机选取3个,加random_state可固定采样结果方便复现 random_sampled_cols = rest_cols.sample(n=3, random_state=42).tolist() # 4. 拼接列名列表后取值 result = df[[fixed_col] + random_sampled_cols]
精简写法
如果不需要拆分步骤,可以直接用一行代码实现:result = df[['a'] + df.columns.drop('a').sample(3).tolist()]
注意事项
- 若需要固定每次的随机采样结果,给
sample()方法传入random_state参数,参数值可以自定义任意整数 - 该写法默认固定列
a会放在返回结果的第一列,如果你需要所有选中列打乱顺序,可以对拼接后的列名列表再做一次随机重排:selected_cols = pd.Series([fixed_col] + random_sampled_cols).sample(frac=1).tolist()
内容的提问来源于stack exchange,提问作者ryand
相关产品推荐
相关产品推荐

