DataFrameをiPython Notebookのテーブルとして表示する


244

iPython Notebookを使用しています。私がこれをするとき:

df

セルが付いた美しいテーブルが手に入ります。ただし、これを行うと:

df1
df2 

最初の美しいテーブルは印刷されません。私がこれを試した場合:

print df1
print df2

列をあふれ、出力を非常に高くする別の形式でテーブルを出力します。

両方のデータセットの美しいテーブルを強制的に出力する方法はありますか?


15
display(df)(とfrom IPython.display import display)、またはprint df.to_html()
joris 2014

3
@joris、あなたのコメントは質問に答えているようです。質問が未回答のままにならないように、回答として投稿できますか?
クリスティアンCiupitu 2015年

回答:


381

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同じ効果でインポートすることもできます


3
自動的にブラウザを開いて表示するようにpythonに要求することは可能HTML(df2.to_html())ですか?
2016年

@Cinaなど、あなたは、ファイルにHTMLを記述し、そのファイルに好みのブラウザを呼び出すことができるはずですが、あなたは上だどのようにそうするようにすると、システムに大きく依存し、ブラウザ
nealmcb

2
HTML(df2.to_html())は何もしません。データフレームをレンダリングするには、display(HTML(df2.to_html()))を実行する必要があります。回答を編集しようとしましたが、どういうわけか拒否されました。
alyaxey 2017

8
バージョン5.6.0では必要ありませんimport display
joelb 2018

連結された文字列を処理する方法は?たとえば、テキスト列からすべてのテキストを取得します。
Peter.k

51
from IPython.display import display
display(df)  # OR
print df.to_html()

5
@emunsingで述べたように、.to_html()は機能せず、レンダリングされていないhtmlテーブルを提供します。
Mayank

44

この回答は、このブログ投稿の2番目のヒントに基づいています:28 Jupyter Notebookのヒント、トリック、ショートカット

ノートブックの上部に次のコードを追加できます

from IPython.core.interactiveshell import InteractiveShell
InteractiveShell.ast_node_interactivity = "all"

これは、Jupyterに、変数またはステートメントの結果をそれ自体の行に出力するように指示します。したがって、次を含むセルのみを実行できます

df1
df2

そして、「両方のデータセットの美しいテーブルを出力する」でしょう。


3
このソリューションは美しく機能し、要求された元の問題を解決します。ありがとう!
Zertrin 2017年

16

私は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

これは出力します:

ここに画像の説明を入力してください


5

表示の間にコンマを使用して両方の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")


1

Jupyter NotebookでDataFrameを表示するには、次のように入力します。

   display(Name_of_the_DataFrame)

例えば:

  ディスプレイ(df)

0

リストに含まれるデータフレームを表示するには:

display(*dfs)
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.