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

如何使用sample函数将pd.Series拆分为两个无重叠且并集为原序列的样本

原代码问题说明

两次独立调用sample()方法都是从完整的原始Series中抽样,即使设置了相同的random_state,也仅能保证两次抽样的随机种子一致,不会自动排除已抽取的元素,因此必然会出现样本重叠的情况。


无重叠样本拆分方案

方案1:先抽小样本,剩余部分自动作为第二个样本

无需额外依赖,逻辑简单直观:

import pandas as pd

example = pd.Series([1,2,3,4,5,6])
# 抽取2个样本作为第一组
example1 = example.sample(n=2, replace=False, random_state=12345)
# 从原Series中剔除第一组的索引,得到剩余4个无重叠样本作为第二组
example2 = example.drop(example1.index)

方案2:交叉验证场景专用拆分方法

如果是为交叉验证拆分训练/测试集,直接使用sklearn的train_test_split方法更规范,自动保证无重叠、并集覆盖全量数据:

import pandas as pd
from sklearn.model_selection import train_test_split

example = pd.Series([1,2,3,4,5,6])
# test_size指定小样本占比,返回结果顺序为「大样本,小样本」
example2, example1 = train_test_split(example, test_size=2/6, random_state=12345)

两种方案最终得到的example1和example2都满足无重叠、并集等于原始Series的要求,可以直接用于后续交叉验证步骤。


内容的提问来源于stack exchange,提问作者Nikita Tsekhanovich

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.04 01:24:02