我用的是iPython笔记本。当我这样做的时候:
df
我得到一张漂亮的有细胞的桌子。然而,如果我这样做:
df1
df2
它不会打印第一个漂亮的表格。如果我这样做:
print df1
print df2
它以一种不同的格式打印表,这种格式将列溢出,并使输出非常高。
有没有办法强迫它为两个数据集打印出漂亮的表格?
我用的是iPython笔记本。当我这样做的时候:
df
我得到一张漂亮的有细胞的桌子。然而,如果我这样做:
df1
df2
它不会打印第一个漂亮的表格。如果我这样做:
print df1
print df2
它以一种不同的格式打印表,这种格式将列溢出,并使输出非常高。
有没有办法强迫它为两个数据集打印出漂亮的表格?
当前回答
这个答案是基于这篇博客文章的第二个技巧: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。 我在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”)
显示列表中包含的数据帧。
dfs = [df1, df2]
display(*dfs)
您可以使用markdown来创建一个表。如果表格包还不可用,系统会要求您首先安装它。
from IPython.display import display, Markdown
display(Markdown(df.to_markdown()))
你需要使用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中导入,效果相同