pandas df.apply() не работает с html.unescape()

#python #html #pandas

Вопрос:

Я пытаюсь декодировать html-символы в фрейме данных pandas. Я не знаю почему, но моя функция «Применить» не будет работать.

 # requirements import html import pandas as pd  # This code works fine. df = df.apply(lambda x: x   "TESTSTRING") print(df) # "TESTSTRING" is appended to all values.  # This code also works fine. html.unescape() is working well. fn = lambda x: html.unescape(x) str = "Someting wrong with lt;bgt;Eamp;amp;Slt;/bgt;" print(fn(str)) # returns "Something wrong with lt;bgt;Eamp;Slt;/bgt;"  # However, the code below doesn't work. The "amp;amp;" within the values dont' get decoded. df2 = df.apply(fn) print(df2) # The html characters aren't decoded!  

Это действительно расстраивает, что функция apply и html.unescape() хорошо работают по отдельности, но я не знаю, почему они не работают, когда они вместе. Я тоже пытался axis=1

Я был бы очень признателен вам за помощь. Заранее спасибо.

Ответ №1:

Проблема в том, что это html.unexcape() кажется невекторизованным, т. Е. Оно принимает только одну единственную строку. В случае, если ваш df не очень велик, использование applymap все равно должно быть достаточно быстрым:

 df2 = df.applymap(lambda x: html.unescape(x)) print(df2)  

Комментарии:

1. Большое спасибо, я не знаком с понятием «векторизованный», но я погуглю и выясню это.