如何在Pandas中创建一个带有可点击的超链接到本地文件的表格

  • Post category:Python

在Pandas中创建一个带有可点击的超链接到本地文件的表格,需要用到DataFrame中的style功能。下面是具体步骤:

  1. 首先导入相关的库,包括pandasosIPython.display。其中os用于获取本地文件路径,IPython.display用于在Jupyter Notebook中显示表格。
import pandas as pd
import os
from IPython.display import FileLink, FileLinks
  1. 创建一个包含本地文件路径的数据框df,其中filename列包含了文件名,filepath列包含了文件路径。这里为了演示方便,我们使用当前目录下的文件。
file_dir = './'
files = os.listdir(file_dir)

df = pd.DataFrame({'filename': files,
                   'filepath': [os.path.join(file_dir, f) for f in files]})
  1. 使用DataFrame.style方法创建一个样式对象,使用applymap方法对数据框中的每个元素进行样式设置,并在对应的单元格中显示文件的超链接。
def make_clickable(val):
    """
    根据文件路径创建一个超链接
    """
    return '<a href="{}">{}</a>'.format(val, val)

style = df.style.applymap(lambda x: f'background-color: {"yellow" if os.path.isfile(x) else ""}').format({'filepath': make_clickable})
style

其中,make_clickable函数用于创建超链接,它的参数val是文件路径,返回结果是一个包含超链接的HTML代码。

  1. 在Jupyter Notebook中使用display方法展示样式对象。
display(style)

这样就创建了一个带有可点击的超链接到本地文件的表格。点击文件名的单元格即可打开对应的文件。

完整代码如下:

import pandas as pd
import os
from IPython.display import FileLink, FileLinks

file_dir = './'
files = os.listdir(file_dir)

df = pd.DataFrame({'filename': files,
                   'filepath': [os.path.join(file_dir, f) for f in files]})

def make_clickable(val):
    """
    根据文件路径创建一个超链接
    """
    return '<a href="{}">{}</a>'.format(val, val)

style = df.style.applymap(lambda x: f'background-color: {"yellow" if os.path.isfile(x) else ""}').format({'filepath': make_clickable})

display(style)