如何在 pandas 和 Jupyter Notebook 中创建带有可点击超链接的表格

Posted

技术标签:

【中文标题】如何在 pandas 和 Jupyter Notebook 中创建带有可点击超链接的表格【英文标题】:How to create a table with clickable hyperlink in pandas & Jupyter Notebook 【发布时间】:2017-07-04 23:22:12 【问题描述】:

print('http://google.com') 输出一个可点击的 url。

如何获取pd.DataFrame(['http://google.com', 'http://duckduckgo.com']) 的可点击网址?

【问题讨论】:

【参考方案1】:

为此尝试使用pd.DataFrame.style.format

df = pd.DataFrame(['http://google.com', 'http://duckduckgo.com'])

def make_clickable(val):
    return '<a href=""></a>'.format(val,val)

df.style.format(make_clickable)

我希望这证明有用。

【讨论】:

你可以使用'&lt;a href="0"&gt;0&lt;/a&gt;'.format(val) 附注:首先通过apply.. 添加列,然后只需df.style 就足够了 或 Python3 你可以使用f"&lt;a href="val"&gt;val&lt;/a&gt;" 这看起来很棒。作为附录,我如何创建一个可点击的链接来执行我在其他地方定义的基础功能?【参考方案2】:

如果您只想将 URL 格式应用于单个列,您可以使用:

data = [dict(name='Google', url='http://www.google.com'),
        dict(name='***', url='http://***.com')]
df = pd.DataFrame(data)

def make_clickable(val):
    # target _blank to open new window
    return '<a target="_blank" href=""></a>'.format(val, val)

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

(PS:不幸的是,我没有足够的声望来评论@Abdou 的帖子)

【讨论】:

如何使“名称”可点击并隐藏网址? @shantanuo 是这样的:df['nameurl'] = df['name'] + '#' + df['url'], def make_clickable_both(val): name, url = val.split('#'), return f'&lt;a href="url"&gt;name&lt;/a&gt;', df.style.format('nameurl': make_clickable_both) 好东西!问题:是否可以从 df 中删除 'name' 和 'url' 列,或者我们可以创建一个仅包含 'nameurl' 列的新 pandas 数据框? @Alan :是的,只需要 nameurl 列。所以你可以例如使用new_df = df[['nameurl']] 创建一个只有nameurl 列的数据框。 @dloeckx 谢谢!【参考方案3】:

@shantanuo :没有足够的声誉来发表评论。 下面的呢?

def make_clickable(url, name):
    return '<a href="" rel="noopener noreferrer" target="_blank"></a>'.format(url,name)

df['name'] = df.apply(lambda x: make_clickable(x['url'], x['name']), axis=1)

【讨论】:

【参考方案4】:
from IPython.core.display import display, html
import pandas as pd

# create a table with a url column
df = pd.DataFrame("url": ["http://google.com", "http://duckduckgo.com"])

# create the column clickable_url based on the url column
df["clickable_url"] = df.apply(lambda row: "<a href='' target='_blank'></a>".format(row.url, row.url.split("/")[2]), axis=1)

# display the table as HTML. Note, only the clickable_url is being selected here
display(HTML(df[["clickable_url"]].to_html(escape=False)))

【讨论】:

以上是关于如何在 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 文件?如何在本地加入两个数据框进行数据分析?