2017-11-04 4 views
0

私は、画像サンプルとそれらに関連するテキスト情報をテーブルに表示したいと思います。Jupyterノートブックにテキストと画像を含む表を表示する方法は?

jupyterノートブックでこれを行うことはできますか?

私はpandasPILをミックスしようとしたが、それはうまくいきませんでした:

import pandas as pd 
d = { 
    'band1': data.to_images(band_1[random_indices]), 
    'band2': data.to_images(band_2[random_indices]), 
    'is_iceberg': is_iceberg[random_indices] 
    } 
pd.DataFrame(data=d) 

出力は、それが画像ではなく、画像そのものの__str__を表示

enter image description here

すなわちでした。

どのように克服するのですか?

答えて

0

これはいかがですか?

to_htmlに設定することは多分セキュリティ上のリスクですが、データを知っていて、そのデータがどこから来ているのかが分かっていればそれほど悪くはないと確信しています。 escapeTrueに変更すると、htmlがpandasによってエスケープされるため、動作しません。そして、これはすべての行に同じイメージを設定しますが、それは簡単に調整することができます。

from IPython.core.display import display, HTML 
import pandas as pd 
data = pd.DataFrame({"A":[1,2,3,4,5], "B":[10,20,30,40,50]}) 
data.loc[:,'img'] = '<img src="Pictures/Capture.PNG" alt="img">' 
display(HTML(data.to_html(escape=False))) 

[EDIT]よりよい代替案は、あろう

from IPython.core.display import display, HTML 
from PIL import Image 
import cStringIO 
import base64 
import pandas as pd 

img = Image.open("Pictures/Capture.PNG") 
img_buffer = cStringIO.StringIO() 
img.save(img_buffer, format="PNG") 
imgStr = base64.b64encode(img_buffer.getvalue()) 

data = pd.DataFrame({"A":[1,2,3,4,5], "B":[10,20,30,40,50]}) 
data.loc[:,'img'] = '<img src="data:image/png;base64,{0:s}">' 
html_all = data.to_html(escape=False).format(imgStr) 
display(HTML(html_all)) 

enter image description here

関連する問題