def statistics(model):
Data['model']=pd.DataFrame(data=np.array([np.amax(model),
ME(ts,model),MAE(ts,model),
MAPE(ts,model)]))
print(Data)
statistics(moving_avg) #calling the function
#result
STATS model
0 MAX 2359.699429
1 ME 4.521675
2 MAE 348.487434
3 MAPE 48.352464
以上是我在PYTHON中的代码,用于将不同模型的统计信息插入到名为Data的公共表中 但是,表格的列名称显示为' model'而不是' moving_avg'。如何确保获得正确的列名?
答案 0 :(得分:-1)
你可以提供一个额外的论点,如评论中所提到的,我认为这是一个很好的做法。但是如果你想保存一些打字,你也可以使用__name__
方法,例如
def statistics(model):
Data[model.__name__]=pd.DataFrame(data=np.array([np.amax(model),
ME(ts,model),MAE(ts,model),
MAPE(ts,model)]))
print(Data)
model.__name__
为您提供函数模型名称的字符串
print(moving_avg.__name__)
# -> moving_avg
<强>更新强>
有些人提到了变量。谢谢你的亲切提醒。脏解决方案是定义一个返回变量的同名函数。这是可能的并且不那么困难,因为变量名称是已知的。对于没有__name__
方法的其他类型的对象,这也有效(仅在简单情况下!)。
ax = [1,2,3]
def ax: return ax
print(ax.__name__)
# -> ax
但是,我不建议在这方面走得太远。我不认为对于所有类型的对象确实存在通用解决方案,并且在复杂情况下,所有这些围绕命名空间玩的尝试都是有风险的。你可能会发现一些非常意外的事请参阅此处的讨论