如何用循环合并40列为2列并生成标签,构建x与y数据集?
解决方案
优化后的代码实现
import pandas as pd # 假设q2_data已完成加载 groups = [] new_columns = ["x1", "x2"] # 循环拆分每2列一组,自动处理20个分组 for i in range(20): start_col = i * 2 end_col = (i + 1) * 2 # 提取当前分组并修改列名 current_group = q2_data.iloc[:, start_col:end_col].copy() current_group.columns = new_columns groups.append(current_group) # 拼接所有分组得到特征集x x = pd.concat(groups, ignore_index=True) # 生成对应标签集y,每个标签对应100条样本 y = pd.Series([label for label in range(20) for _ in range(100)]) # 验证结果形状 print(f"特征集x形状: {x.shape}") # 输出 (2000, 2) print(f"标签集y形状: {y.shape}") # 输出 (2000,)
代码说明
- 循环拆分分组:通过
range(20)遍历20个分组,自动计算每组的列索引范围(i*2到(i+1)*2),替代手动写20次切片操作,后续如果列数调整,只需修改循环次数即可。 - 统一列名与拼接:每个分组重命名为指定列名后存入列表,最后一次性用
concat拼接,避免手动罗列20个分组变量。 - 标签生成:通过列表推导式生成标签,每个标签(0-19)重复100次,刚好对应每个分组的100条样本,保证标签与特征一一对应。
内容的提问来源于stack exchange,提问作者Dailyn Despradel
相关产品推荐
相关产品推荐

