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

使用lambda函数计算Z-score时遇AttributeError: float无rolling属性

问题分析与解决
  • 错误原因:你用df.Close.apply()的时候,apply默认会逐元素传递数据——也就是把Close列里的每个单个浮点数值(float类型)传给lambda函数的参数x,而单个float对象根本没有rolling方法,所以触发了AttributeError。
  • 正确做法:pandas的rolling是直接作用于整个Series(也就是你的df.Close)的方法,不需要用apply来逐元素处理。直接对整个列计算滑动窗口的均值和标准差即可。

修正后的代码

# 先计算滑动窗口均值和标准差
rolling_mean = df.Close.rolling(window=200, min_periods=20).mean()
rolling_std = df.Close.rolling(window=200, min_periods=20).std()
# 计算Z-score并添加到原DataFrame
df['zscore'] = (df.Close - rolling_mean) / rolling_std

或者也可以写成更简洁的单行形式(但可读性稍差):

df['zscore'] = (df.Close - df.Close.rolling(window=200, min_periods=20).mean()) / df.Close.rolling(window=200, min_periods=20).std()

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.03 23:01:03