我用的是iPython笔记本。当我这样做的时候:

df

我得到一张漂亮的有细胞的桌子。然而,如果我这样做:

df1
df2 

它不会打印第一个漂亮的表格。如果我这样做:

print df1
print df2

它以一种不同的格式打印表,这种格式将列溢出,并使输出非常高。

有没有办法强迫它为两个数据集打印出漂亮的表格?


当前回答

看起来你可以在显示中使用逗号来显示两个dfs。 我在github上的一些笔记本上注意到了这一点。这段代码来自杰克·范德普拉斯的笔记本。

class display(object):
    """Display HTML representation of multiple objects"""
    template = """<div style="float: left; padding: 10px;">
    <p style='font-family:"Courier New", Courier, monospace'>{0}</p>{1}
    </div>"""
    def __init__(self, *args):
        self.args = args

    def _repr_html_(self):
        return '\n'.join(self.template.format(a, eval(a)._repr_html_())
                     for a in self.args)

    def __repr__(self):
        return '\n\n'.join(a + '\n' + repr(eval(a))
                       for a in self.args)

显示屏(df”、“df2”)

其他回答

您可以使用markdown来创建一个表。如果表格包还不可用,系统会要求您首先安装它。

from IPython.display import display, Markdown

display(Markdown(df.to_markdown()))

看起来你可以在显示中使用逗号来显示两个dfs。 我在github上的一些笔记本上注意到了这一点。这段代码来自杰克·范德普拉斯的笔记本。

class display(object):
    """Display HTML representation of multiple objects"""
    template = """<div style="float: left; padding: 10px;">
    <p style='font-family:"Courier New", Courier, monospace'>{0}</p>{1}
    </div>"""
    def __init__(self, *args):
        self.args = args

    def _repr_html_(self):
        return '\n'.join(self.template.format(a, eval(a)._repr_html_())
                     for a in self.args)

    def __repr__(self):
        return '\n\n'.join(a + '\n' + repr(eval(a))
                       for a in self.args)

显示屏(df”、“df2”)

为了在Jupyter Notebook中显示DataFrame,只需输入:

   display(Name_of_the_DataFrame)

例如:

  display(df)

从我的另一个答案来看,

如果你想使用选项,你可以使用上下文管理器组合显示:

from IPython.display import display

with pd.option_context('precision', 3):
    display(df1)
    display(df2)

你需要使用IPython的显示模块中的HTML()或display()函数:

from IPython.display import display, HTML

# Assuming that dataframes df1 and df2 are already defined:
print "Dataframe 1:"
display(df1)
print "Dataframe 2:"
display(HTML(df2.to_html()))

注意,如果只打印ddf .to_html(),就会得到原始的、未渲染的HTML。

你也可以从IPython.core.display中导入,效果相同