You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何按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

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.27 06:35:58