教程实操遇IndexError:替换索引超出位置参数元组范围求助
解决IndexError: Replacement index 1 out of range问题
嘿,这个问题我太熟了——你遇到的IndexError完全是字符串格式化时的参数不匹配问题,咱们一步步拆解:
错误根源
看你代码里的这行(以及后面类似的行):
df['{}_{}1d'.format(ticker)]
这个字符串里有两个{}占位符,但你只给format()传了一个参数ticker。Python找不到第二个参数来替换第二个{},自然就抛出了Replacement index 1 out of range的错误。
从你的代码逻辑来看,你应该是想生成类似AAPL_1d、AAPL_2d这样的列名(假设ticker是AAPL),所以你的格式化字符串写错了——多余的那个{}完全没必要。
修正后的代码
把每个列名的格式化字符串里的多余{}删掉,改成下面这样:
tickers, df = process_data_for_labels(ticker) df['{}_target'.format(ticker)] = list(map(buy_sell_hold, df['{}_1d'.format(ticker)], df['{}_2d'.format(ticker)], df['{}_3d'.format(ticker)], df['{}_4d'.format(ticker)], df['{}_5d'.format(ticker)], df['{}_6d'.format(ticker)], df['{}_7d'.format(ticker)],))
补充说明
简单说就是:你要的列名是「股票代码+下划线+数字+d」,所以只需要一个占位符来替换股票代码,后面的_1d、_2d都是固定后缀,直接写在字符串里就好,不需要额外的占位符。
内容的提问来源于stack exchange,提问作者balexander1
相关产品推荐
相关产品推荐

