【问题标题】:Convert HTML Characters To Strings in Pandas Dataframe在 Pandas Dataframe 中将 HTML 字符转换为字符串
【发布时间】:2020-05-22 02:36:48
【问题描述】:

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

我尝试了以下代码,但无法更改为搅拌。

import html
html.unescape(data)

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

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

ID A1 A2 A3 1 我不知道是否不符合 其实我很难理解...我不知道它是否不符合我的经验... 2 NaN NaN NaN 3 我认为这是一个正确的网页设计,至少... NaN 这个项目需要 400 日元或 4 英镑。

【问题讨论】:

  • 你想把什么转换成字符串?将数据添加到数据框中的代码在哪里?现在您的数据框中的值的数据类型是什么?

标签: python html pandas google-cloud-translate


【解决方案1】:

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

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

df.fillna("").applymap(html.unescape)

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

df.stack().apply(html.unescape).unstack()

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

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

df.applymap(lambda x: html.unescape(x) if pd.notnull(x) else x)

【讨论】:

  • 如果有NaN,为什么不能applymap?
  • 如果你直接应用map,html.unescape会抱怨它不能处理浮动。 NaN 在技术上是一个浮点数(或更准确地说是“非数字”。)无论如何,该函数不知道如何处理它
  • 你可以使用df.applymap(lambda x: html.unescape(x) if pd.notnull(x) else x)之类的东西,它只会在非NaN的条件下调用html.unescape...
猜你喜欢
  • 1970-01-01
  • 2020-04-12
  • 2020-11-20
  • 1970-01-01
  • 2018-07-13
  • 2013-02-06
  • 2019-03-10
  • 2017-06-04
  • 2019-08-31
相关资源
最近更新 更多