如何按年份切片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
相关产品推荐
相关产品推荐

