#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. Большое спасибо, я не знаком с понятием «векторизованный», но я погуглю и выясню это.