我不明白为什么这不起作用。我正在尝试执行For循环来保存我的错误度量:
error = []
naive_list = list(['24', '168', 'standard', 'custom'])
for i in naive_list:
for j in range(1,5):
rmse = mean_squared_error(df_test["f'Price_REG{j}'"], f'df_test_{i}'["f'Price_REG{j}'"], squared=False)
mae = mae(df_test["f'Price_REG{j}'"], f'df_test_{i}'["f'Price_REG{j}'"])
error.append(rmse)
error.append(mae)
我们的想法是保存所有这16个度量,这样我就可以在以后访问它们,无论是在单独的变量中,在一个法令中,还是在一个列表中。
首先我试着在变量名f'rmse_{i}_{j} = mean_squared_error(df_test["f'Price_REG{j}'"], f'df_test_{i}'["f'Price_REG{j}'"], squared=False)
上使用f'string,但显然这是不可能的。所以我试着把它们都放在一个列表中,就像上面一样。但我在f'string KeyError: "f'Price_REG{j}'"
上得到了一个错误。
1条答案
按热度按时间eeq64g8w1#
这个
df_test["f'Price_REG{j}'"]
的字面意思是字符串df_test["f'Price_REG{j}'"]
。它不会被进一步计算。它是一个字符串文字。相反,
df_test[f'Price_REG{j}']
将被计算,并返回Price_REG{j}
中的任何内容,然后从df中提取同名的列。也就是说,因为f字符串只包含一个变量,所以它在功能上等同于
df_test[Price_REG{j}]
。你已经把自己画到了一个过度工程的角落里。这里不需要任何f字符串和包含f字符串的字符串文字。只需要变量本身,不需要引号。
而应:
但我不确定的是
df_test_
是什么,或者df_test_{i}
是要做什么。我也不完全理解Price_REG{j}
的花括号(它们应该是方括号吗?Price_REG
是什么?)。但无论如何,至少您摆脱了画角,继续研究代码中可能出现的其他问题。