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
相关产品推荐
相关产品推荐

