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

如何拆分pandas dataframe并筛选指定年份的训练集与测试集

Pandas 操作实现方案

首先导入依赖库:
import pandas as pd


1 构造示例数据(已有数据可跳过)

按照你描述的字段和数据构造测试用DataFrame:

data = [
    ["2017-01", "A", 100],
    ["2018-02", "A", 110],
    ["2019-01", "A", 90],
    ["2019-02", "A", 105],
    ["2020-01", "A", 117],
    ["2020-02", "A", 120]
]
df = pd.DataFrame(data, columns=["year-month", "company", "GWh"])

2 删除2020年所有数据

提供两种实现方式:

  • 字符串前缀匹配(简单直接,适合格式统一的场景)
df = df[~df["year-month"].str.startswith("2020")]
  • 转为时间格式过滤(兼容性更强,适合后续时间维度分析)
df["year-month"] = pd.to_datetime(df["year-month"])
df = df[df["year-month"].dt.year != 2020]

注意:如果选择第二种转时间格式的方案,后续拆分数据集也可以直接用时间属性判断,逻辑更严谨


3 拆分训练集、测试集

3.1 基于字符串前缀拆分

# 训练集:2019年之前的所有记录
train_df = df[df["year-month"].str.startswith(("2017", "2018"))]
# 测试集:2019年的所有记录
test_df = df[df["year-month"].str.startswith("2019")]

3.2 基于时间属性拆分(适配第二步转时间格式的方案)

train_df = df[df["year-month"].dt.year < 2019]
test_df = df[df["year-month"].dt.year == 2019]

结果验证

最终得到的两个数据集内容如下:

  • 训练集包含2条记录:2017-01、2018-02的电力消耗数据
  • 测试集包含2条记录:2019-01、2019-02的电力消耗数据

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.26 22:45:03