2016-04-11 18 views
0

私はストリーミングでtxtファイルのtwitterデータを収集しています。このファイルをipythonノートブックを使用してフィルタリングやさまざまなクエリに使用しています。私は、重いデータファイルを持っているときに、コマンドがtwitterデータのカテゴリの「テキスト」のどこかに詰まってしまうことがあることがわかりました。私は立ち往生しないようにデータを扱う方法が必要です。私は何が起こるのかを下に貼り付けています。ここでtwitterデータはtxtファイルから解析できません

tweets_ISIS = tweets['text'].apply(lambda tweet: word_in_text('ISIS', tweets)) 

は、出力は次のようになります。事前に

AttributeError       Traceback (most recent call last) 
<ipython-input-34-444b712d99dc> in <module>() 
----> 1 tweets_ISIS = tweets['text'].apply(lambda tweet: word_in_text('ISIS', tweets)) 

/usr/lib64/python2.7/site-packages/pandas/core/series.pyc in apply(self, func, convert_dtype, args, **kwds) 
    2167    values = lib.map_infer(values, lib.Timestamp) 
    2168 
    -> 2169   mapped = lib.map_infer(values, f, convert=convert_dtype) 
     2170   if len(mapped) and isinstance(mapped[0], Series): 
     2171    from pandas.core.frame import DataFrame 

    pandas/src/inference.pyx in pandas.lib.map_infer (pandas/lib.c:62578)() 

    <ipython-input-34-444b712d99dc> in <lambda>(tweet) 
      ----> 1 tweets_ISIS = tweets['text'].apply(lambda tweet: word_in_text('ISIS', tweets)) 

     <ipython-input-33-0ee00dabf341> in word_in_text(word, text) 
     1 def word_in_text(word, text): 
     2  word = word.lower() 
    ----> 3  text = text.lower() 
     4  match = re.search(word, text) 
     5  if match: 

    /usr/lib64/python2.7/site-packages/pandas/core/generic.pyc in   __getattr__(self, name) 
    2358     return self[name] 
    2359    raise AttributeError("'%s' object has no attribute '%s'" % 
-> 2360         (type(self).__name__, name)) 
    2361 
    2362  def __setattr__(self, name, value): 

    AttributeError: 'DataFrame' object has no attribute 'lower 

ありがとう!

+0

を次のように私が定義されて?質問を編集して[mcve]に改善することを検討してください。 – cel

答えて

1

あなたの意図がtweetであると思われる場合はtweetsを使用しています。ラムダ関数の入力をword_in_text()に渡すのではなく、DataFrameをword_in_text()に渡しています。試してみてください:

また
tweets_ISIS = tweets['text'].apply(lambda tweet: word_in_text('ISIS', tweet)) 

apply()ここで使用する権利機能ですか?制限された状況に基づいて、textシリーズの各値に対してmap()word_in_text()を実行する適切な選択肢になるかもしれないが、より完全で再現可能なものがなければ確実にわからない。

+0

それでも同じ結果が出ました –

+0

'tweets_ISIS = tweets ['text']してみましたか?(ラムダツイート:word_in_text( 'ISIS'、ツイート))'( 'map')?あなたのラムダ関数への 'tweet'入力パラメータがマップ内のデータフレームになる可能性は分かりません...' word_in_text'の中に 'print(text)'を入れてラムダ関数が何であるか調べることができます'word_in_text'に渡します。 – SPKoder

0

import reあなたは `word_in_text`を定義します

def word_in_text(word, text): 
     word = word.lower() 
      text = text.lower() 
     match = re.search(word, text) 
     if match: 
      return True 
      return False 
関連する問題