从对象

时间:2017-04-21 19:41:01

标签: python oop dataframe jupyter-notebook

我在Anaconda分发的Jupyter / IPython笔记本上安装了Python 2.7。如果pandas数据帧是编码单元格中的最后一个,它会输出一个漂亮的干净表格格式(单元格被漂亮的黑色边框包围)。

如果它不是单元格中的最后一行打印或输出行,则必须将其包装在print()中以使其输出,如果您将其设置为默认值,则会丢失默认的表格格式细胞的最后一行。我相信这个问题在3.x中表现相同。当df不是单元格中的最后一行代码时,有没有办法告诉Python输出df表格式?根据这篇文章的其余部分,有没有办法在对象代码中的一个方法中进行这项工作(这是我真正想要做的)?

为了帮助调查此事:

这会在DF周围输出漂亮的表:

# rest of my code here
myDF

这不输出表格式,它只是吐出内容:

# my code
print(myDF)
print("other stuff ...")
# more code might be here ...

当我尝试使用DF作为对象内部函数调用的最后一行的语法时,它根本没有输出(示例代码如下)。要修复它,我认为将它包装在print()中是唯一的选择,但我真的想保持好的表格式。有没有办法做到这一点?

目前无效的代码:

什么都不输出:

class MyObject(MyBaseObject):
    # few global variables here used by the class itself
    def __init__(self, some args ...):
        # Some code that happens in the initialization method
        # includes super() for MyBaseObject class       
        if moveList == "Stored":
            _localDF = self.get_solutionDF()
            _localDF

    def get_solutionDF(self):
        #  returns a DF created during initialization method

输出DF但不包装在漂亮的表格格式中:

只需在localDF语句中包含print()即可修改上述代码。我在一个变量中捕获了get_solutionDF()的输出作为实验,只是简单地结束了self.get_solutionDF()的函数没有输出任何东西,但这没有帮助(仍然没有输出)。

欢迎提示。一旦找到DF以通过其他方式输出DF然后简单地使其成为Jupyter代码单元的最后一行,该解决方案也可以帮助其他代码。感谢您的帮助。

1 个答案:

答案 0 :(得分:3)

如果要在功能中使用显示而不是打印来显示漂亮的表格。我用它来打印pandas样式格式,这是对我有用的代码:

from Ipython.display import display
while True:
    #some operation that generates a pandas dataframe "df"
    display(df)
    break

注意:如果上面的import命令在您的实现中引发错误,请尝试使用此import命令:

import ipython_genutils

使用Anaconda和Python 3.6的用户需要此变体

`