如何按paraList的Y/N标记将指定变量数据读取至不同分组?
解决方案:按paraList标记拆分变量数据
我来帮你梳理下需求:你需要从Rawdata里提取paraList指定的A、C、E、F这几个变量,再根据paraList里的Y/N标记,把标记为Y的变量数据放到x_Y,标记为N的放到x_N。先帮你调整下原有代码里的小问题,再给出完整实现:
完整代码实现
import pandas as pd import numpy as np import matplotlib.pyplot as plt from scipy import stats from sklearn.model_selection import train_test_split # 注意:旧版sklearn.cross_validation已废弃,改用model_selection from sklearn.model_selection import cross_val_score from sklearn.preprocessing import StandardScaler # 读取数据文件 dataFileName='RFInput.xlsx' sheetName='Rawdata' sheetNamePara='paraList' # 读取原始数据(pandas新版本需用sheet_name参数,而非sheetname) dataRaw=pd.read_excel(dataFileName, sheet_name=sheetName) # 读取参数列表,假设paraList工作表第一行是变量名,第二行是Y/N标记 datapara=pd.read_excel(dataFileName, sheet_name=sheetNamePara, header=None) # 整理变量名与对应标记的映射关系 var_names = datapara.iloc[0].tolist() var_flags = datapara.iloc[1].tolist() var_flag_map = dict(zip(var_names, var_flags)) # 筛选Y/N对应的变量名 y_group_vars = [var for var, flag in var_flag_map.items() if flag == 'Y'] n_group_vars = [var for var, flag in var_flag_map.items() if flag == 'N'] # 从原始数据中提取对应分组的变量数据 x_Y = dataRaw[y_group_vars] x_N = dataRaw[n_group_vars] # 可选:打印结果验证 print("Y组变量数据:") print(x_Y) print("\nN组变量数据:") print(x_N)
关键步骤说明
- paraList数据处理:通过
iloc提取paraList里的变量名行和标记行,组合成字典后,就能清晰关联每个变量的Y/N标记,方便后续筛选。 - 变量分组提取:用列表推导式筛选出Y、N对应的变量名,再从
dataRaw中提取这些列,直接得到目标分组数据x_Y和x_N。 - sklearn模块兼容:旧版
sklearn.cross_validation模块已被移至sklearn.model_selection,替换后避免版本兼容报错。
针对你的示例数据验证
基于你提供的示例:
Rawdata包含A、B、C、D、E、F变量
paraList: A C E F;Y N Y Y
运行代码后:
x_Y会包含A、E、F三列的所有数据x_N会包含C列的所有数据
这样就精准实现你的需求啦~
内容的提问来源于stack exchange,提问作者Balaji
相关产品推荐
相关产品推荐

