You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

pandas的df.apply()调用html.unescape()无法解码HTML字符问题求助

pandas DataFrame HTML特殊字符解码apply失效问题解决方案

根本原因

DataFrame.apply()默认传入处理函数的参数是整列的Series对象,不是单个单元格的字符串值。
你之前做x + "TESTSTRING"能正常生效,是因为pandas的字符串加法支持矢量化操作,会自动逐元素执行;但html.unescape()本身只接收单个字符串输入,不支持处理Series对象,因此无法完成解码。添加axis=1参数仅会将入参改为整行的Series对象,本质还是没有传入单个字符串,所以也无效。

可行解决方案

方案1:全表逐元素处理(所有列都需要解码时使用)

使用pandas专门用于逐元素处理的applymap方法:

import html
df2 = df.applymap(html.unescape)

方案2:指定单列处理(仅部分列需要解码时使用)

对目标字符串列单独调用Series.apply:

# 假设需要解码的列名为content
df['content'] = df['content'].apply(html.unescape)

方案3:更高性能的矢量化处理(pandas 1.3及以上版本支持)

直接使用pandas内置的字符串解码方法,性能比逐元素调用高:

df['content'] = df['content'].str.unescape()

验证示例

import html
import pandas as pd

# 构造测试数据
df = pd.DataFrame({
    'col1': ["Someting wrong with <b>E&amp;S</b>", "Test &lt;div&gt;"],
    'col2': ["Another &amp; test", "Hello&nbsp;world"]
})

# 执行解码
df2 = df.applymap(html.unescape)
print(df2)
# 输出已完成解码,示例输出第一行第一列为:Someting wrong with <b>E&S</b>

内容的提问来源于stack exchange,提问作者June Park

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.09.25 05:45:04