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

Pandas resample FutureWarning求助:1分钟OHLC数据重采样至15分钟

嗨,这个问题我之前也踩过坑!pandas在新版本里确实弃用了resample()里的how参数,官方推荐用agg()或者apply()来替代,我给你两种解决方案,都能完美避开这个警告:

方法1:用agg()(推荐,简洁高效)

针对你这种每列需要不同聚合规则的场景,agg()是最直接的选择,原来的ohlc_dict可以直接传给它,完全不用改,只需要把how=ohlc_dict换成.agg(ohlc_dict)就行:

ohlc_dict = {'open':'first', 'high':'max', 'low':'min', 'close': 'last'}
price15m = df.resample('15Min', closed='right').agg(ohlc_dict).dropna(how='any')

这种写法不仅符合pandas的新语法,还比旧的how参数更清晰,官方也更推荐用agg()来处理多列聚合的需求。

方法2:用apply()(适合复杂自定义逻辑)

如果之后你有更复杂的窗口计算需求(比如要结合多列做自定义运算),就可以用apply()。针对当前的OHLC场景,我们可以写一个自定义函数来处理每个15分钟窗口:

def calculate_ohlc(window):
    # 对每个采样窗口计算OHLC值
    return pd.Series({
        'open': window['open'].iloc[0],  # 窗口第一个开盘价
        'high': window['high'].max(),    # 窗口最高价
        'low': window['low'].min(),      # 窗口最低价
        'close': window['close'].iloc[-1]# 窗口最后一个收盘价
    })

price15m = df.resample('15Min', closed='right').apply(calculate_ohlc).dropna(how='any')

apply()会把每个15分钟的子数据集传给自定义函数,函数返回的Series会被组合成最终的重采样DataFrame。不过要注意,这种方式的性能比agg()稍弱一些,所以如果只是常规的OHLC聚合,优先用第一种方法哦。

另外再提个小提醒:确保你的DataFrame索引是datetime类型,不然resample()会报错,看你原来的代码能运行,应该已经满足这个条件啦~

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.15 08:35:02