IndexError: 位置参数元组的替代索引1超出范围

15

我正在跟随教程,但不知道为什么出现了这个错误:

    <ipython-input-61-d59f7a5a07ab> in extract_featuresets(ticker)
      2     tickers, df = process_data_for_labels(ticker)
      3     df['{}_target'.format(ticker)] = list(map(buy_sell_hold,
----> 4                                              df['{}_{}1d'.format(ticker)],
      5                                              df['{}_{}2d'.format(ticker)],
      6                                              df['{}_{}3d'.format(ticker)],

IndexError: Replacement index 1 out of range for positional args tuple

这是我的代码:

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)],))

这里是教程链接:https://www.youtube.com/watch?v=zPp80YM2v7k


1
“ticker” 必须是一个两个元素的元组,因为格式字符串中有两个占位符。它是吗? - DYZ
你应该调用 tickers 而不是 ticker... 注意前一行只解包了一个元素 '{}_target'.format(ticker) - RichieV
3个回答

29

您的格式字符串在format中需要两个参数,但您只传递了一个ticker作为参数。

如果ticker是一个包含两个元素的列表或元组,您可以这样做:

df['{}_{}1d'.format(*ticker)]
否则,删除一个花括号:
df['{}_1d'.format(ticker)]

4
在Python中,*被用于解包可迭代对象(详见如何使用Pythonic方式解包元组?)。 - Aniket Deshpande

6
如果您想在{ }中获得相同的值,可以使用以下代码:
df['{ }_{ }1d'.format(*ticker)]

尝试像这样做:

df['{0}_{0}1d'.format(*ticker)]

我解决了类似于你的问题。


0
在我的情况下,我正在替换一个模板化的单元测试Python文件中的值。它包含了一个旧的字符串格式化命令:
# bad code
self.logger.error("Test Case 1: FAILED with reason: {}".format(failure_message))

# fixed code
self.logger.error("Test Case 1: FAILED with reason: {{}}".format(failure_message))

这导致了一个误导性错误的问题。
我必须确保Python代码中的任何一对花括号都是双括号,以保持格式化完成后的单括号。

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接