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

如何将Pandas日频DataFrame重采样至序列实际月末而非日历月末?

解决Pandas重采样保留实际月末日期的问题

当你需要将日频股票数据重采样为月频,且保留每个月数据中实际最后一个交易日的日期(而非日历月末),可以用以下两种简洁方法:

方法1:使用groupby + pd.Grouper直接取每组最后一行

这种方法最直接,分组后直接获取每组的最后一行,索引会自动保留原始数据中的实际最后日期:

import pandas as pd

# 假设df是你的日频股票数据DataFrame,索引为日期类型
result = df.sort_index().groupby(pd.Grouper(freq='M')).last()
  • pd.Grouper(freq='M')按自然月分组,确保同一月份的数据被归为一组
  • .last()直接提取每组的最后一行,保留原始的日期索引和对应价格

方法2:修正resample后的索引

如果你更习惯用resample,可以先获取重采样后的数据,再替换索引为实际最后日期:

# 先通过resample获取月度数据(此时索引是日历月末)
resampled_data = df.sort_index().resample('M').last()
# 提取每个月的实际最后日期
actual_end_dates = df.sort_index().groupby(df.index.to_period('M')).apply(lambda x: x.index[-1])
# 替换索引
resampled_data.index = actual_end_dates

两种方法都能实现你的需求:既得到每个月最后一个交易日的价格,又保留对应的实际日期,而非默认的日历月末(比如2022-07-31)。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.25 16:36:10