使用Pandas将日度数据降采样至季度级别并提取季末原始数值
Pandas日度数据降采样为季度粒度取季末原始值方法
前置检查
操作前先确认两个条件:
- 你的DataFrame索引是datetime类型,若不是先执行转换:
df.index = pd.to_datetime(df.index)
- 数据按日期升序排列,顺序不对的话先排序:
df = df.sort_index()
具体实现
你之前用的mean()是求季度平均值的聚合函数,要取每个季度最后一天的原始值,换对应的聚合逻辑即可,提供两种常用场景的实现:
场景1:输出索引为标准季度末日期
如果希望输出的索引是每年固定的3月31日、6月30日、9月30日、12月31日的标准季度末日期,直接用resample搭配last()聚合即可,last()会直接提取每个季度分组的最后一行原始值,不会做任何计算:
df_quarter = df.resample('Q').last()
场景2:输出索引为原始数据中的实际季末日期
如果希望保留原始数据里每个季度真实存在的最后一天作为索引(比如你的数据截止到2021年10月31日,最后一个季度的索引会显示为2021-10-31,而不是标准的12月31日),可以按季度分组后取每组的最后一行:
df_quarter = df.groupby(df.index.to_period('Q')).tail(1)
内容的提问来源于stack exchange,提问作者sekinod
相关产品推荐
相关产品推荐

