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

Pandas逐行判断High列是否接近lifetime列输出0/1布尔值的方法

问题原因
  • math.isclose 仅支持单个标量数值比较,不支持直接对pandas Series执行逐元素运算,因此会报错。
  • 原代码存在变量名不一致问题:读入的行情对象命名为data,但赋值lifetime列时使用了未定义的df,会额外触发名称错误。
  • 注意Python标准库math.isclose的相对公差参数名为rel_tol,但numpy对应方法的参数名为rtol,不要混淆。
正确实现代码
import pandas as pd
from pandas_datareader import data as web
import numpy as np

data = web.DataReader('goog', 'yahoo')
# 计算滚动历史最高价
data['lifetime'] = data['High'].asfreq('D').rolling(window=999999, min_periods=1).max()
# 逐行近似判断,直接转换为1/0输出
data['isclose'] = np.isclose(data['High'], data['lifetime'], rtol=0.003).astype(int)

如果你需要输出布尔值而非1/0,去掉末尾的.astype(int)即可。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.30 11:24:05