Python中如何将StochRSI函数返回的元组结果追加至DataFrame
直接完成列追加的实现方案
你编写的StochRSI()返回的三个结果序列,全都是基于传入的daily.close列的索引计算得到的,和原daily DataFrame的索引天然匹配,无需复杂拼接操作,通过pandas基础的列赋值逻辑就能完成合并。
操作方法
函数返回的calcs是按顺序排列的三元元组,依次对应stochrsi、stochrsi_K、stochrsi_D三个计算结果。直接对元组拆包后赋值给原DataFrame的新列即可,参考代码:
# 在现有 calcs = StochRSI(daily.close, period=14, smoothK=3, smoothD=3) 这行代码后追加 daily['stochrsi'], daily['stochrsi_k'], daily['stochrsi_d'] = calcs
常见注意点
- 无需使用merge、concat类拼接操作:这类操作容易因索引类型不匹配、重复值问题导致行数据错位,pandas列赋值的逻辑会自动按索引匹配数据,前期因计算周期不足产生的空值会自动填充NaN,完全符合技术指标的正常输出逻辑。
- 你编写的函数内部包含
dropna()、索引截断逻辑,计算得到的指标序列长度会短于原始行情序列,这是正常现象:StochRSI本身需要累计至少2*period + smoothK + smoothD长度的前置数据才能输出有效结果,前期未满足计算条件的位置为NaN不属于错误。 - 可以省略
calcs临时中间变量,直接在调用函数时完成列赋值,简化代码:
daily['stochrsi'], daily['stochrsi_k'], daily['stochrsi_d'] = StochRSI( daily.close, period=14, smoothK=3, smoothD=3 )
- 赋值完成后可通过
daily.tail()检查输出,末尾行的指标存在有效值、前期对应周期位置为NaN,即为合并正确。
内容的提问来源于stack exchange,提问作者Harrison H
相关产品推荐
相关产品推荐

