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

如何按年份切片Pandas中含十年日度股票数据的DataFrame?

按年份切片股票DataFrame的简便方法

当然有更简洁的按年份切片方案!你提到的df.index.year['2017']写法虽然思路方向对,但实际行不通——因为df.index.year返回的是包含各日期年份的整数序列,没法直接用年份值索引。下面给你几个实用且符合需求的方法:

  • 最简便的直接切片法
    Pandas的DatetimeIndex天生支持年份字符串直接切片,这应该是最接近你预期的写法:

    df['2017']  # 一键获取2017年全年的所有数据
    

    这种写法还支持更精细的时间范围,比如df['2017-03':'2017-06']就能快速提取2017年第二季度的数据,非常直观。

  • 布尔索引灵活筛选
    如果需要同时筛选多个年份,或者结合其他条件,布尔索引会更灵活:

    # 单一年份筛选
    df[df.index.year == 2017]
    # 多个年份筛选
    df[df.index.year.isin([2015, 2016, 2017])]
    
  • 年份分组/聚合(若需统计操作)
    要是你不仅想切片,还需要按年份做数据聚合(比如计算每年的平均收盘价),可以用groupby或resample:

    # 按年份分组计算均值
    df.groupby(df.index.year).mean()
    # 按年度重采样并计算均值(结果索引为年末日期)
    df.resample('Y').mean()
    

其中第一种方法df['2017']是最省心的,完全不用手动写起始和结束日期,Pandas会自动帮你匹配对应年份的所有数据行。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.15 07:32:37