iPython Notebookを使用しています。私がこれをするとき:
df
セルが付いた美しいテーブルが手に入ります。ただし、これを行うと:
df1
df2
最初の美しいテーブルは印刷されません。私がこれを試した場合:
print df1
print df2
列をあふれ、出力を非常に高くする別の形式でテーブルを出力します。
両方のデータセットの美しいテーブルを強制的に出力する方法はありますか?
iPython Notebookを使用しています。私がこれをするとき:
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:"
display(HTML(df2.to_html()))
print df1.to_html()
レンダリングされていない生のHTMLを取得するだけであることに注意してください。
IPython.core.display
同じ効果でインポートすることもできます
HTML(df2.to_html())
ですか?
import display
この回答は、このブログ投稿の2番目のヒントに基づいています:28 Jupyter Notebookのヒント、トリック、ショートカット
ノートブックの上部に次のコードを追加できます
from IPython.core.interactiveshell import InteractiveShell
InteractiveShell.ast_node_interactivity = "all"
これは、Jupyterに、変数またはステートメントの結果をそれ自体の行に出力するように指示します。したがって、次を含むセルのみを実行できます
df1
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
これは出力します:
表示の間にコンマを使用して両方のdfを表示できるようです。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")
display(df)
(とfrom IPython.display import display
)、またはprint df.to_html()