如何在 Pandas 和 Jupyter Notebook 中创建带有指向本地文件的可单击超链接的表

Posted

技术标签:

【中文标题】如何在 Pandas 和 Jupyter Notebook 中创建带有指向本地文件的可单击超链接的表【英文标题】:How to create a table with clickable hyperlink to a local file in pandas & Jupyter Notebook 【发布时间】:2019-01-21 21:20:15 【问题描述】:

我从这篇文章中了解到,我可以链接到 Jupyter Notebook 中的网站: How to create a table with clickable hyperlink in pandas & Jupyter Notebook

因此,我尝试调整代码以创建一个带有本地文件链接的数据框。但是,当我单击下面代码中的超链接时,什么也没有发生。

如何修复下面的代码以使超链接正常工作?

import os
import pandas as pd

data = [dict(name='file1', 
        filepath='C:/Users/username/Documents/file1.docx'),
        dict(name='file2', 
        filepath='C:/Users/username/Documents/file2.docx')]

df = pd.DataFrame(data)

def make_clickable(url):
    name= os.path.basename(url)
    return '<a href="file:///"></a>'.format(url,name)

df.style.format('filepath': make_clickable)

【问题讨论】:

【参考方案1】:

您的浏览器实际上阻止了这一点。您可能会在浏览器的开发人员工具(Chrome、Firefox、Safari)中看到类似“不允许加载本地资源”的错误消息。更改此设置会使您面临严重的安全风险。

另一种方法是将要访问的文件放在与 Jupyter Notebook 相同的工作目录中。例如,如果您在工作目录中添加一个名为“Documents”的文件夹,则可以像这样链接到文件:

http://localhost:8888/notebooks/Documents/file1.docx

您的代码将是:

import os
import pandas as pd

data = [dict(name='file1', 
    filepath='Documents/file1.docx'),
    dict(name='file2', 
    filepath='Documents/file2.docx')]

df = pd.DataFrame(data)

def make_clickable(url):
    name= os.path.basename(url)
    return '<a href=""></a>'.format(url,name)

df.style.format('filepath': make_clickable)

【讨论】:

谢谢。我测试了您的代码,它解决了问题的第一部分。但是,现在我从 Jupyter Notebook 收到一条错误消息,提示“Jupyter Notebook 无法打开此文件类型”。是否有使用默认应用程序(在本例中为 Word)打开文件的简单方法?或者,我是否仅限于与 Jupyter Notebook 兼容的文件类型? 很奇怪,我无法复制您的错误消息。该代码在我的计算机(Mac 和 Windows)上都可以正常工作,因为 .docx 格式为 jpg/png 感谢您的帮助。我有一个奇怪的问题 - 当我单击数据框中的链接(导致本地 html 文件)时,它们不会显示。但是,如果我复制粘贴 URL - 它可以工作。我正在使用火狐。知道为什么会这样吗?

以上是关于如何在 Pandas 和 Jupyter Notebook 中创建带有指向本地文件的可单击超链接的表的主要内容,如果未能解决你的问题,请参考以下文章

如何在 Pandas 和 Jupyter Notebook 中创建带有指向本地文件的可单击超链接的表

如何在 jupyter 笔记本中将 tqdm 与 pandas 一起使用?

如何在 jupyter 中像 pandas Dataframe 一样打印 Pyspark Dataframe

在使用 jupyter notebook 时如何在 pandas 中使用 Dataframe 时查看完整数据? [复制]

如何解决 jupyter notebook 中的 pandas 问题?

如何使用 python pandas 在本地系统 Jupyter Notebook 中读取两个较大的 5GB csv 文件?如何在本地加入两个数据框进行数据分析?