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

DataFrame滚动窗口应用hurst函数报错:TypeError: must be real number, not tuple

问题解决:TypeError: must be real number, not tuple

错误原因

hurst.compute_Hc()函数的返回值是一个三元组(H, c, data),其中:

  • H是你需要的赫斯特指数
  • c是计算过程中的常数项
  • data是用于计算的缩放数据

而pandas.Series.rolling.apply()要求传入的自定义函数必须返回单个数值,你直接返回整个元组,导致后续round()函数无法处理元组类型,触发了类型错误。

修复代码

修改hurst_function,只返回元组中的赫斯特指数(即第一个元素)即可:

import hurst 

def hurst_function(df_col_slice):
    # 提取赫斯特指数H,丢弃元组中的其他元素
    H, _, _ = hurst.compute_Hc(df_col_slice)
    return H

def func(df_col):
    results = round(df_col.rolling(101).apply(hurst_function)[100:], 1)
    return results

func(df_col)

额外说明

  • 若需要保留compute_Hc返回的其他值,可以在hurst_function中做额外处理(比如存入全局变量或其他数据结构),但rolling.apply的返回值必须是单个数值,才能生成有效的Series结果。
  • 你已验证df_col_slice是合法的float64类型Series,因此数据输入无问题,错误完全源于返回值类型不匹配。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.01 18:01:26