在iPython Notebook中将DataFrame显示为表
我正在使用iPython笔记本。 当我这样做:
df
我得到一个美丽的细胞表。 但是,如果我这样做:
df1 df2
它不打印第一张漂亮的桌子。 如果我尝试这个:
print df1 print 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:" HTML(df2.to_html())
请注意,如果您只是print df1.to_html()
您将获得原始的,未print df1.to_html()
HTML。
您也可以从IPython.core.display
导入相同的效果
发布@joris的评论作为答案:
显示(df)(从IPython.display导入显示)或打印df.to_html()
或者在代码中:
from IPython.display import display display(df) # OR print df.to_html()
这个答案是基于从这篇博客的第二个技巧: 28 Jupyter笔记本的技巧,窍门和捷径
您可以将以下代码添加到笔记本的顶部
from IPython.core.interactiveshell import InteractiveShell InteractiveShell.ast_node_interactivity = "all"
这告诉Jupyter打印任何variables或语句的结果在它自己的行上。 所以你可以执行一个单独包含的单元格
df1 df2
它将“打印出两个数据集的漂亮表格”。
看来你可以在显示中使用逗号来显示这两个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)
display('df', "df2")