如何基于pandas的week列高效实现训练测试集划分?
基于条件列划分训练集与测试集的高效实现方法
既然你是按固定业务条件(week<51为训练集,week>=51为测试集)划分,完全不需要用到train_test_split——这个函数是用于随机划分的,反而会增加不必要的计算开销。直接用pandas的布尔索引切片是最高效、最直观的方案:
实现步骤
- 生成划分用的布尔掩码
train_mask = data['week'] < 51 test_mask = data['week'] >= 51
- 基于掩码直接拆分特征集(X)和标签集(y)
X_train = data.loc[train_mask, xvars] X_test = data.loc[test_mask, xvars] y_train = data.loc[train_mask, yvar] y_test = data.loc[test_mask, yvar]
额外验证(可选)
如果需要确认划分是否符合预期,可以快速验证:
# 检查训练集的week最大值 print("训练集week最大值:", data.loc[train_mask, 'week'].max()) # 检查测试集的week最小值 print("测试集week最小值:", data.loc[test_mask, 'week'].min())
这种方法的优势:
- 完全匹配你的条件需求,没有随机逻辑干扰
- 操作直接,代码可读性极强
- 执行效率远高于调用
train_test_split,省去了随机打乱、比例计算等额外步骤
内容的提问来源于stack exchange,提问作者nerd
相关产品推荐
相关产品推荐

