python - 将 BeautifulSoup 函数应用于 Pandas DataFrame

标签 python pandas dataframe beautifulsoup

我有一个 Pandas DataFrame,它是通过读取 csv 得到的,在那个文件中有我想删除的 HTML 标签。我想用 BeautifulSoup 删除标签,因为它比使用像 <.*?> 这样的简单正则表达式更可靠。

我通常通过执行从字符串中删除 HTML 标签

text = BeautifulSoup(text, 'html.parser').get_text()

现在我想对我的 DataFrame 中的每个元素执行此操作,因此我尝试了以下操作:

df.apply(lambda text: BeautifulSoup(text, 'html.parser').get_text())

但这会返回以下错误:

ValueError: ('The truth value of a Series is ambiguous. Use a.empty, a.bool(), a.item(), a.any() or a.all().', 'occurred at index id')

最佳答案

使用applymap

例如:

import pandas as pd
from bs4 import BeautifulSoup


df = pd.DataFrame({"a": ["<a>Hello</a>"], "b":["<c>World</c>"]})
print(df.applymap(lambda text: BeautifulSoup(text, 'html.parser').get_text()))

输出:

       a      b
0  Hello  World

MoreInfo

关于python - 将 BeautifulSoup 函数应用于 Pandas DataFrame,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/53189494/

相关文章:

python - 按行随机连接数据帧

python - 如何仅保留列中的值出现足够频繁的行

python - 如何从 pandas groupby().sum() 的输出创建新列?

Python - Spyder 在使用 Pandas DataFrame 时挂起

python - 在 PySpark UDF 中使用不同的数据框

r - 更快地填充 R 数据框中缺失的列

python - Python:从单独的线中的点绘制一条垂直线

python - Pandas Groupby 累计金额

python - 如何调整每周分析的移动平均线?

python - 结合多个 Pandas read_csv 和/或 file.readline()