定义一个函数(在PYTHON中)以将来自不同模型的统计信息作为表中的列插入

时间:2018-02-06 06:59:16

标签: python pandas tabular

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'。如何确保获得正确的列名?

1 个答案:

答案 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

但是,我不建议在这方面走得太远。我不认为对于所有类型的对象确实存在通用解决方案,并且在复杂情况下,所有这些围绕命名空间玩的尝试都是有风险的。你可能会发现一些非常意外的事请参阅此处的讨论

How can I get the name of an object in Python?