2017-06-22 39 views
0

私はtext列のHTMLを含むパンダのデータフレームを持っています。私はちょうどテキストを取得したい、別名タグをストリップします。私は次のように下にこれを行うにしてみてください。パンダ: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を使用するアプローチを使用することができます。あなたのデータの場合はフロートエラー「はLEN()を持っていない 『:

>>> 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

はそうでなければ、』型のオブジェクトは、例外TypeError」を取得します、ラムダ関数を適用する前に「df.dropnaを()」を使用して不足しているすべてのデータを削除することを確認してくださいフレームにデータがありません。 – sparrow

関連する問題