在iPython Notebook中将DataFrame显示为表

Chr*_*ris 208 printing pandas ipython-notebook display jupyter-notebook

我正在使用iPython笔记本.当我这样做:

df
Run Code Online (Sandbox Code Playgroud)

我得到一张带细胞的美丽桌子.但是,如果我这样做:

df1
df2 
Run Code Online (Sandbox Code Playgroud)

它不会打印出第一张漂亮的桌子.如果我试试这个:

print df1
print df2
Run Code Online (Sandbox Code Playgroud)

它以不同的格式打印出表格,使列溢出并使输出非常高.

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

emu*_*ing 328

您需要使用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()))
Run Code Online (Sandbox Code Playgroud)

请注意,如果您只是print df1.to_html()获得原始的,未经渲染的HTML.

您也可以IPython.core.display使用相同的效果导入

  • 在版本5.6.0上,您不需要“导入显示” (6认同)
  • 是否可以让python自动打开浏览器并显示`HTML(df2.to_html())`? (3认同)
  • HTML(df2.to_html())什么都不做.您应该显示(HTML(df2.to_html()))来呈现数据帧.我试着编辑你的答案,但不知怎的,它被拒绝了. (2认同)

Jac*_*ere 44

from IPython.display import display
display(df)  # OR
print df.to_html()
Run Code Online (Sandbox Code Playgroud)

  • 有用!显示器(HTML(df.to_html())) (7认同)
  • 如@emunsing所述,.to_html()不起作用,它提供了未呈现的html表。 (3认同)
  • 不再需要导入显示。只需“display(df)”即可。 (3认同)

Jon*_*oks 37

这个答案基于这篇博文的第二个提示:28个Jupyter笔记本提示,技巧和快捷方式

您可以将以下代码添加到笔记本的顶部

from IPython.core.interactiveshell import InteractiveShell
InteractiveShell.ast_node_interactivity = "all"
Run Code Online (Sandbox Code Playgroud)

这告诉Jupyter在它自己的行上打印任何变量或语句的结果.因此,您可以执行仅包含的单元格

df1
df2
Run Code Online (Sandbox Code Playgroud)

它将"打印出两个数据集的漂亮表格".

  • 这个解决方案工作得很漂亮,解决了原来的问题.谢谢! (3认同)

Shi*_*hah 11

我更喜欢不要搞乱HTML,并尽可能使用本机基础结构。您可以将Output小部件与Hbox或VBox一起使用:

import ipywidgets as widgets
from IPython import display
import pandas as pd
import numpy as np

# sample data
df1 = pd.DataFrame(np.random.randn(8, 3))
df2 = pd.DataFrame(np.random.randn(8, 3))

# create output widgets
widget1 = widgets.Output()
widget2 = widgets.Output()

# render in output widgets
with widget1:
    display.display(df1)
with widget2:
    display.display(df2)

# create HBox
hbox = widgets.HBox([widget1, widget2])

# render hbox
hbox
Run Code Online (Sandbox Code Playgroud)

输出:

在此处输入图片说明


小智 6

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

   显示(Name_of_the_DataFrame)

例如:

  显示(df)


Moo*_*dra 5

似乎您可以在显示中使用逗号来显示两个 dfs。我在 github 上的一些笔记本上注意到了这一点。此代码来自 Jake VanderPlas 的笔记本。

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)
Run Code Online (Sandbox Code Playgroud)

display('df', "df2")


Mok*_*ono 5

您可以使用 markdown 创建表格。tabulate如果软件包尚不可用,系统会要求您先安装该软件包。

from IPython.display import display, Markdown

display(Markdown(df.to_markdown()))
Run Code Online (Sandbox Code Playgroud)