将 HTML 字符转换为 Pandas Dataframe 中的字符串

pur*_*lar 1 html python pandas google-cloud-translate

我想将数据框中的 html 字符替换为字符串。

我尝试了下面的代码,但无法更改为 Stirng。

import html
html.unescape(data)
Run Code Online (Sandbox Code Playgroud)

这是我的数据框,我该怎么做?

供您参考,此结果来自 Google Cloud 的 Translation API。

ID A1 A2 A3 1 我不知道它是否不满足实际上我很难理解...我不知道它是否不满足我的exp... 2 NaN NaN NaN 3 I认为这是一个正确的网页设计,至少... NaN 该商品售价 400 日元或 4 英镑。

在此输入图像描述

fil*_*den 6

如果您没有任何 NaN,那么您可以简单地使用applymap()来处理所有单元格html.escape

因此,如果您认为可以将 NaN 转换为空字符串,您可以使用:

df.fillna("").applymap(html.unescape)
Run Code Online (Sandbox Code Playgroud)

如果您想保留 NaN,那么一个好的解决方案是将stack()列转换为索引的另一级别,这将抑制 NaN 条目。然后你可以使用apply()(因为它现在是一个系列,而不是一个数据帧),稍后unstack()将其恢复为原始格式:

df.stack().apply(html.unescape).unstack()
Run Code Online (Sandbox Code Playgroud)

但请注意,最后一个方法将消除完全由 NaN 组成的行或列​​,不确定您是否可以接受。

另一种选择是使用applymap()lambda,并且仅适用html.unescape于非 NaN 的项:

df.applymap(lambda x: html.unescape(x) if pd.notnull(x) else x)
Run Code Online (Sandbox Code Playgroud)

  • 您可以使用类似“df.applymap(lambda x: html.unescape(x) if pd.notnull(x) else x)”之类的东西,它只会在非 NaN 的术语上调用“html.unescape”... (2认同)