How to create a table with clickable hyperlink in pandas & Jupyter Notebook

前端 未结 4 1588
北荒
北荒 2020-11-27 17:19

print(\'http://google.com\') outputs a clickable url.

How do I get clickable URLs for pd.DataFrame([\'http://google.com\', \'http://duckduckgo.com

相关标签:
4条回答
  • 2020-11-27 18:01

    @shantanuo : not enough reputation to comment. How about the following?

    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)
    
    
    0 讨论(0)
  • 2020-11-27 18:04

    Try using pd.DataFrame.style.format for this:

    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)
    

    I hope this proves useful.

    0 讨论(0)
  • 2020-11-27 18:11
    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)))
    
    0 讨论(0)
  • 2020-11-27 18:18

    If you want to apply URL formatting only to a single column, you can use:

    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: Unfortunately, I didn't have enough reputation to post this as a comment to @Abdou's post)

    0 讨论(0)
提交回复
热议问题