我用的是iPython笔记本。当我这样做的时候:
df
我得到一张漂亮的有细胞的桌子。然而,如果我这样做:
df1
df2
它不会打印第一个漂亮的表格。如果我这样做:
print df1
print df2
它以一种不同的格式打印表,这种格式将列溢出,并使输出非常高。
有没有办法强迫它为两个数据集打印出漂亮的表格?
我用的是iPython笔记本。当我这样做的时候:
df
我得到一张漂亮的有细胞的桌子。然而,如果我这样做:
df1
df2
它不会打印第一个漂亮的表格。如果我这样做:
print df1
print df2
它以一种不同的格式打印表,这种格式将列溢出,并使输出非常高。
有没有办法强迫它为两个数据集打印出漂亮的表格?
当前回答
您可以使用markdown来创建一个表。如果表格包还不可用,系统会要求您首先安装它。
from IPython.display import display, Markdown
display(Markdown(df.to_markdown()))
其他回答
我不喜欢摆弄HTML,而是尽可能多地使用本地基础设施。你可以使用输出小部件与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
这个输出:
为了在Jupyter Notebook中显示DataFrame,只需输入:
display(Name_of_the_DataFrame)
例如:
display(df)
这个答案是基于这篇博客文章的第二个技巧:28个Jupyter笔记本技巧、技巧和快捷方式
您可以将以下代码添加到笔记本的顶部
from IPython.core.interactiveshell import InteractiveShell
InteractiveShell.ast_node_interactivity = "all"
这告诉Jupyter在它自己的行上打印任何变量或语句的结果。这样你就可以执行一个只包含
df1
df2
它将“为两个数据集打印出漂亮的表格”。
from IPython.display import display
display(df) # OR
print df.to_html()
显示列表中包含的数据帧。
dfs = [df1, df2]
display(*dfs)