在Pandas中创建一个带有可点击的超链接到本地文件的表格,需要用到DataFrame
中的style
功能。下面是具体步骤:
- 首先导入相关的库,包括
pandas
、os
和IPython.display
。其中os
用于获取本地文件路径,IPython.display
用于在Jupyter Notebook中显示表格。
import pandas as pd
import os
from IPython.display import FileLink, FileLinks
- 创建一个包含本地文件路径的数据框
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]})
- 使用
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代码。
- 在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)