2016-07-22 3 views
-3

ユーザー名をtwitterから取得しようとしています。解析ユーザーの場所を抽出するためのユーザー名Twitter

入力:私は地理場所おそらく地理座標を見つけたい:ユーザーリストには、以上の50Kユーザー名

AkkiPritam,6.77E+17,12/15/2015,#chennaifloods 
AkkiPritam,6.77E+17,12/15/2015,#bhoomikatrust 
AkkiPritam,6.77E+17,12/15/2015,#akshaykumar 
gischethans,6.77E+17,12/15/2015,#chennaifloods 
mid_day,6.77E+17,12/15/2015,#bollywood 
mid_day,6.77E+17,12/15/2015,#chennaifloods 
Nanthivarman16,6.77E+17,12/15/2015,#admkfails 
Nanthivarman16,6.77E+17,12/15/2015,#jayafails 
Nanthivarman16,6.77E+17,12/15/2015,#stickergovt 
Nanthivarman16,6.77E+17,12/15/2015,#chennaifloods 
AdilaMatra,6.77E+17,12/15/2015,#chennaifloods 
AdilaMatra,6.77E+17,12/15/2015,#climatechange 
AdilaMatra,6.77E+17,12/15/2015,#delhichokes 
AdilaMatra,6.77E+17,12/15/2015,#smog 
HDFCERGOGIC,6.77E+17,12/15/2015,#chennaifloods 
HDFCERGOGIC,6.77E+17,12/15/2015,#tnfloods 
ImSoorej,6.77E+17,12/15/2015,#chennaifloods 
ImSoorej,6.77E+17,12/15/2015,#chennaimicr 

コードを持っています。

from __future__ import print_function 
import tweepy 
from tweepy import OAuthHandler 
from tweepy import Stream 
from tweepy.streaming import StreamListener 
import pandas as pd 
import csv 

consumer_key = 'xyz' 
consumer_secret = 'xyz' 
access_token = 'xyz' 
access_token_secret = 'xyz' 

data = pd.read_csv('user_keyword.csv') 
df = ['user_name', 'user_id', 'date', 'keyword'] 

def get_user_details(username): 
     userobj = api.get_user(username) 
     return userobj 

if __name__ == '__main__': 
    #authenticating the app (https://apps.twitter.com/) 
    auth = tweepy.auth.OAuthHandler(consumer_key, consumer_secret) 
    auth.set_access_token(access_token, access_token_secret) 
    api = tweepy.API(auth) 

    username = df['user_name'] 
    userOBJ = get_user_details(username) 
    print(userOBJ.location) 

エラー:プログラムにユーザー名を解析する際に問題が発生しました。

Traceback (most recent call last): 
    File "user_profile_location.py", line 38, in <module> 
    username = df['user_name'] 
TypeError: list indices must be integers, not str 
+1

umm。 'df'は辞書ではなく、文字列のリストです。整数インデックスを使って' df'要素にアクセスする必要があります。 –

+0

@ChitharanjanDasありがとう!どのような変更を行うのですか? –

+0

ここにコード 'data = pd.read_csv( 'user_keyword.csv')'がDataFrameを作成します。 'df = ['user_name'、 'user_id'、 'date'、 'keyword']'はPythonリストを作成し、そのリストを変数 'df'に代入します。あなたのcsvがリストの項目と一致する見出しを持っているなら、あなたは 'data ['user_name']'を使う必要があります。私の最善の提案は、pandas [docs](http://pandas.pydata.org/pandas- docs/stable /) – toasteez

答えて

1

あなたは私がuser_keyword.csvファイルが何のヘッダを持っていないことを前提としていDATAFRAME

data = pd.read_csv('user_keyword.csv') 
df = ['user_name', 'user_id', 'date', 'keyword'] 

の列にすべきだと思います何のためにあなたのDATAFRAMEと「DF」を定義する「データ」を使用しています以下を追加してみてください:

data.columns = df 

dfに格納されている値に列名が変更されます。 その後の代わり:

username = df['user_name'] 

試してみてください。

username = data['user_name'] 

は現在のユーザ名が列全体であるのでget_user_details(username)は、単一の文字列を期待すべきではないことに注意してください。

+0

私はこのエラーを取得していますあなたのコードは正しいですし、もっと掘り下げする必要が29行目、get_user_details内 userobj = api.get_user(ユーザ名) ファイル "/usr/local/lib/python2.7/dist-packages/tweepy/binder.py"、行245、_コール内 return method.execute ) ファイル "/usr/local/lib/python2.7/dist-packages/tweepy/binder。あなたに認証することができませんでした。 '、u'code':32} tweepy.error.TweepError:[{u'message ':u'あなたを認証できませんでした:32} ] ' –

+0

あなたが認証エラー – toasteez

+1

を持っているように見える' userOBJ = get_user_details(username) 'あなたのユーザ名でユーザ名を置き換えてみてください。 – toasteez

関連する問題