2017-06-22 57 views
0

我有一個包含HTML的text列的熊貓數據框。我想獲得文本,也就是去掉標籤。我嘗試以下做法如下:熊貓:麻煩從DataFrame剝離HTML標籤列

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

試試這個:

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

你可以選擇使用,使用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 
+1

確保應用lambda函數之前刪除使用「df.dropna()」的所有丟失的數據,否則你將得到「類型錯誤:類型的對象浮動,如果你的數據「沒有LEN()」錯誤幀缺少數據。 – sparrow