熊猫:无法从DataFrame列中剥离HTML标记

时间:2017-06-22 15:40:42

标签: python pandas beautifulsoup

我有一个包含HTML的text列的Pandas DataFrame。我想获得文本,即剥离标签。我尝试按如下方式执行此操作:

from bs4 import BeautifulSoup
result_df['text'] = BeautifulSoup(result_df['text']).get_text()

然而,我最终得到了这个错误:

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

我做错了什么?

谢谢!

3 个答案:

答案 0 :(得分:6)

试试这个:

from bs4 import BeautifulSoup
result_df['text'] = [BeautifulSoup(text).get_text() for text in result_df['text'] ]

答案 1 :(得分:2)

您也可以使用apply的方法,但我怀疑它有多大区别。

>>> import pandas as pd
>>> data = {'a': ['<div><span>something</span></div>', '<a href="nowhere.org">erowhon</a>']}
>>> df = pd.DataFrame(data)
>>> df
                                   a
0  <div><span>something</span></div>
1  <a href="nowhere.org">erowhon</a>
>>> import bs4
>>> df['a'] = df['a'].apply(lambda x: bs4.BeautifulSoup(x, 'lxml').get_text())
>>> df
           a
0  something
1    erowhon

答案 2 :(得分:0)

df = pd.read_csv("./testlog.tsv", index_col=0,delimiter='\t')
X = df.review
df['review'] = [BeautifulSoup(X).getText() for X in df['review']]

这将从文件测试日志中的列审阅中删除所有HTML标记。