【问题标题】:Formating string value in dataframe to convert it to html tag格式化数据框中的字符串值以将其转换为 html 标记
【发布时间】:2021-12-30 06:13:05
【问题描述】:

我想格式化 pandas 数据框列中的每个字符串值。 我正在查看其他帖子,我发现了类似的内容:

df['Col']=df['Col'].map('${:,.2f}'.format)

假设该列中每一行的值都是“Hello”。 示例:

A  B
1  "Hello"
2  "Hello"

每一行的最终输出是:

f"<br> <a href={"Hello"} title= Link; style='background-color: orange'> Title </a> </br>"

A  B
1  "f"<br> <a href={"Hello"} title= Link; style='background-color: orange'> Title </a> </br>""
2  "f"<br> <a href={"Hello"} title= Link; style='background-color: orange'> Title </a> </br>""

【问题讨论】:

    标签: python html pandas


    【解决方案1】:
    df["Col"].apply(lambda s: f"<br> <a href={s} title= Link; style='background-color: orange'> Title </a> </br>""
    

    【讨论】:

    • 这是完美的,它确实有效,但它显示了整个链接,而不是我放在我的 html 标签中的标题“LINK”?这是为什么呢?
    【解决方案2】:

    如果您不需要使用许多或复杂的条件语句构建 HTML 对象,您可以通过标准库使用 string Template

    创建一个包含 id 和 url 两列的示例数据框。

     df1 = pd.DataFrame([[1, "google.com"],[1, "bing.com"],[1, "duckduckgo.com"]], columns=['id', 'url'])
    

    编写一个简单的函数,返回一个替换值的模板。这将允许您在处理值时添加验证、错误处理等。

    from string import Template
    def value_to_html(value):
            t = Template('<br> <a href=$url title= Link; style="background-color: orange"> Title </a> </br>')
            return t.substitute(url=value)
    

    然后使用 Pandas apply() 方法对数据框中的每一行运行函数。请记住,DO NOT MODIFY THE OBJECT YOU ARE ITERATING OVER。所以最好在数据框中添加一个新列。

    df1['html'] = df1['url'].apply(lambda x: value_to_html(x)) 
    

    模板可能会变得更加复杂,如果您的应用程序需要更多控制,请查看python wiki 以获得更多指导。

    【讨论】:

    • 您使用的是哪个库?名称“模板”未定义。它是内置的python功能吗?
    • 对不起,我的回答不是更清楚。 stdlib 字符串库包含 Template 类。 from string import Template
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2022-01-19
    • 1970-01-01
    • 1970-01-01
    • 2014-05-15
    • 2015-08-21
    • 2019-11-26
    • 1970-01-01
    相关资源
    最近更新 更多