我用的是iPython笔记本。当我这样做的时候:
df
我得到一张漂亮的有细胞的桌子。然而,如果我这样做:
df1 df2
它不会打印第一个漂亮的表格。如果我这样做:
print df1 print df2
它以一种不同的格式打印表,这种格式将列溢出,并使输出非常高。
有没有办法强迫它为两个数据集打印出漂亮的表格?
from IPython.display import display display(df) # OR print df.to_html()
你需要使用IPython的显示模块中的HTML()或display()函数:
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()))
注意,如果你只是print df1.to_html(),你会得到原始的,未渲染的HTML。
print df1.to_html()
你也可以从IPython.core.display导入,效果相同
IPython.core.display
这个答案是基于本博客文章中的第二个技巧:28 Jupyter笔记本提示,技巧和快捷方式
您可以将以下代码添加到笔记本的顶部
from IPython.core.interactiveshell import InteractiveShell InteractiveShell.ast_node_interactivity = "all"
这告诉Jupyter在它自己的行上打印任何变量或语句的结果。这样你就可以执行一个只包含
它将“为两个数据集打印出漂亮的表格”。
似乎你可以在显示中使用逗号在中间显示两个dfs。 我在github上的一些笔记本上注意到了这一点。这段代码来自杰克·范德普拉斯的笔记本。< / p >
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)
display('df', "df2")
我不喜欢摆弄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
这个输出:
显示列表中包含的数据帧。
dfs = [df1, df2] display(*dfs)
为了在Jupyter Notebook中显示DataFrame,只需输入:
display(Name_of_the_DataFrame)
例如:
display(df)
您可以使用markdown来创建一个表。如果tabulate包还不可用,你会被要求首先安装它。
tabulate
from IPython.display import display, Markdown display(Markdown(df.to_markdown()))
从我的另一个回答,
如果你想使用选项,你可以使用上下文管理器组合显示:
from IPython.display import display with pd.option_context('precision', 3): display(df1) display(df2)