有什么方法可以在从函数返回多个值时保持pandas数据帧的网格输出?

时间:2016-05-18 13:52:47

标签: python pandas statsmodels

所有

从函数返回多个值时,有没有办法保持pandas数据帧或statsmodels回归摘要的网格显示?

def lr(x,y,df):
    x=sm.add_constant(x)
    est=sm.OLS(y,x)
    est=est.fit()
    return (df.corr(),
            print('\n'),
            print('\n'),
            est.summary())

以上述功能为例。如果我刚刚返回df.corr(),它将保留通常在查看pandas数据帧时出现的网格。如果我只返回est.summary(),结果相同。然而,当我想要返回它们时,它们在美学上变得不那么令人愉悦了。我已经尝试将它们都放在print()中并且结果相同。请帮忙!

编辑:

def lr(x,y,df):
x=sm.add_constant(x)
est=sm.OLS(y,x)
est=est.fit()
return (HTML(df.corr()._repr_html_()),
        HTML(est.summary()._repr_html_()))

返回(IPython.core.display.HTML对象,IPython.core.display.HTML对象)

def lr(x,y,df):
x=sm.add_constant(x)
est=sm.OLS(y,x)
est=est.fit()
return (HTML(df.corr()._repr_html_() + est.summary()._repr_html_()))

给出了我在下面评论中列出的错误

谢谢!

1 个答案:

答案 0 :(得分:2)

df.corr()est.summary()都返回DataFrame个对象。

当一个函数只返回一个函数时,Jupyter通过运行引擎盖方法_repr_html_显示该对象,该方法返回漂亮html表的文本然后显示它。你可以通过以下方式做同样的事情:

from IPython.core.display import HTML

HTML(df.corr()._repr_html_())

但是,当你将它们都包装在一个元组中时,Jupyter会在元组上运行_repr_方法,该方法只会返回未经过格式化处理的文本。如果您从函数中进行了分配:

my_results = lr(x, y, df)

my_results[0]

你会再次进行格式化。或者:

my_results[1]

也相当格式化。要获得两者,请执行以下操作:

from IPython.core.display import HTML

HTML(df.corr()._repr_html_() + est.summary()._repr_html_())