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

如何按观测序号划分Pandas数据集为训练集(0-40)与测试集(40-71)

按索引划分Pandas数据集的实用方法

既然你需要固定索引范围的划分(而非随机抽样),直接用Pandas的索引筛选或位置索引就能搞定,以下是具体实现:

方法1:按索引值筛选

假设你的X和y的索引是0到71的连续整数,直接根据索引范围提取即可:

# 训练集:索引0到40的所有观测(包含40)
X_train = X.loc[X.index <= 40]
y_train = y.loc[y.index <= 40]

# 测试集:索引40到71的所有观测(包含40和71)
X_test = X.loc[(X.index >= 40) & (X.index <= 71)]
y_test = y.loc[(y.index >= 40) & (y.index <= 71)]

如果你的索引不是连续整数,但你知道训练/测试集对应的具体索引列表,也可以直接传列表筛选:

# 手动定义索引范围
train_indices = list(range(0, 41))  # 0到40(共41个样本)
test_indices = list(range(40, 72))  # 40到71(共32个样本)

X_train = X.loc[train_indices]
y_train = y.loc[train_indices]
X_test = X.loc[test_indices]
y_test = y.loc[test_indices]

方法2:按行位置划分(iloc)

如果你的数据是按时间顺序排好的(前2个月在前,最后1个月在后),用位置索引iloc更直接:

# 训练集:前41行(位置0到40,iloc是左闭右开,所以写:41)
X_train = X.iloc[:41]
y_train = y.iloc[:41]

# 测试集:从第40行到第71行(包含两端,所以写40:72)
X_test = X.iloc[40:72]
y_test = y.iloc[40:72]

小提醒

  • 如果不想让训练集和测试集有重叠(比如索引40的样本只属于测试集),把测试集的起始索引改成41就行,比如X_test = X.loc[X.index >= 41]
  • 确保X和y的索引是完全对齐的,这样筛选出来的特征和标签才不会对应错

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.24 18:57:17