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

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

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

【问题讨论】:

    标签: pandas jupyter-notebook


    【解决方案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='Stackoverflow', url='http://stackoverflow.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)))
      

      【讨论】:

        猜你喜欢
        • 2019-01-21
        • 2015-11-25
        • 1970-01-01
        • 1970-01-01
        • 2020-06-02
        • 2014-03-04
        • 2011-12-15
        相关资源
        最近更新 更多