使用combinations生成元组批量创建DataFrame新列仅生成1列问题求助
问题原因
你当前的代码仅提取了combinations生成结果中的第一个二元组b[0]执行逻辑,没有对所有生成的二元组做遍历操作,因此只能生成1列结果,无法达到批量生成多列的预期。
修复方案
遍历所有生成的二元组,将每组的两个数值分别代入判断逻辑生成对应列即可:
import pandas as pd import pandas_ta as ta import numpy as np from itertools import product, combinations # 生成所有10到49的不重复二元组合,总共有C(40,2)=780个组合 b = list(combinations(range(10, 50),2)) choices = [1, -1] # 遍历每个组合批量生成新列 for sma_pair in b: s_left, s_right = sma_pair conditions = [ df[f'sma_{s_left}'] > df[f'sma_{s_right}'], df[f'sma_{s_left}'] < df[f'sma_{s_right}'] ] df[f'sma_{s_left} & sma_{s_right}'] = np.select(conditions, choices, default=0)
补充说明
如果你不需要780这么多列,可以调整combinations中range的范围,比如调整为range(10, 18)就能生成28个组合,接近你提到的30个列的需求。
内容的提问来源于stack exchange,提问作者holguinmora
相关产品推荐
相关产品推荐

