如何在Jupyter笔记本中显示带有文本和图像的表格?

Dim*_*ims 3 python html-table image pillow jupyter-notebook

我想在表格中显示图像样本和一些相关的文本信息。

在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)
Run Code Online (Sandbox Code Playgroud)

输出是

在此处输入图片说明

即它显示的__str__是图像,而不是图像本身。

如何克服?

Tas*_*ski 5

这个怎么样?

我敢肯定,设置escapeto_html是安全上的风险可能,但如果你知道的数据,并知道它是未来从它希望没有那么糟糕。如果更改escapeTrue它,将无法正常工作,因为html被熊猫转义了。这样每行都设置相同的图像,但是可以轻松调整。

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)))
Run Code Online (Sandbox Code Playgroud)

[编辑]更好的选择是

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))
Run Code Online (Sandbox Code Playgroud)

在此处输入图片说明