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

Python遍历tuple生成DataFrame SMA对比列仅最后一组生效问题求解

问题原因

  • 核心问题是DataFrame新列的赋值语句没有放在for循环的代码块内,循环遍历所有组合的过程中,仅会在全部循环结束后执行一次赋值操作,此时x、y仅保存了最后一组组合的数值,因此只会生成最后一个对应的新列。
  • 额外注意:你代码里的参数lenght拼写错误,正确应为length,否则调用ta.sma时会触发参数报错;同时不要使用tuple作为变量名,它是Python内置类型名,容易引发命名冲突。

修正后代码

from itertools import combinations
import numpy as np
# 你原有依赖的ta库、df变量保持原有定义不变即可

a = list(combinations(range(10, 15),2))
print(a)

for index, tuple_item in enumerate(a):
    x = tuple_item[0]
    y = tuple_item[1]
    print(x, y)
    # 赋值语句缩进放到循环内部,每次循环生成对应新列
    df[f'sma_{x}_Vs_sma_{y}'] = np.where(ta.sma(df['close'], length = x) > ta.sma(df['close'], length = y), 1, -1)

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.29 10:54:03