Como extrair apenas textos em hashtag usando tweepy?
Quero extrair hashtags para o meu projeto de análise de sentimentos, no entanto, estou recebendo uma lista de dicionário contendo todas as hashtags e seus índices no tweet. Eu só quero o texto.
Meu código:data = tweepy.Cursor(api.search, q, since=a[i], until=b[i]).items()
tweet_data = []
tweets = pd.DataFrame()
tweets['Tweet_ID'] = map(lambda tweet: tweet['id'], tweet_data)
tweets['Tweet'] = map(lambda tweet: tweet['text'].encode('utf-8'), tweet_data)
tweets['Date'] = map(lambda tweet: time.strftime('%Y-%m-%d %H:%M:%S', time.strptime(tweet['created_at'],'%a %b %d %H:%M:%S +0000 %Y')), tweet_data)
tweets['User'] = map(lambda tweet: tweet['user']['screen_name'], tweet_data)
tweets['Follower_count'] = map(lambda tweet: tweet['user']['followers_count'], tweet_data)
tweets['Hashtags']=map(lambda tweet: tweet['entities']['hashtags'], tweet_data)
Saída atual:df=pd.DataFrame({'Hashtags' : [{u'indices': [53, 65], u'text': u'Predictions'}, {u'indices': [67, 76], u'text': u'FreeTips'}, {u'indices': [78, 89], u'text': u'SoccerTips'}, {u'indices': [90, 103], u'text': u'FootballTips'}, {u'indices': [104, 110], u'text': u'Goals'}]})
Saída esperada:df=pd.DataFrame({'Hashtags' :["u'Predictions'", "u'SoccerTips'", "u'FootballTips'", "u'Goals'"]})
Tentei usar vários métodos para achatar / reduzir / acessar um dicionário aninhado que contém a lista de dicionários. Por favor ajude.
Erro:como o @MSeifert sugeriu, eu tentei o método dele. O seguinte erro foi gerado:
dt=tweet.entities.hashtags
pd.io.json.json_normalize(dt, 'hashtags')
pd.io.json.json_normalize(dt, 'hashtags')['text'].tolist()
Traceback (most recent call last): <\br>
File "<ipython-input-166-be11241611d6>", line 1, in <module>
dt=tweet.entities.hashtags
AttributeError: 'dict' object has no attribute 'entities'
Eu também tentei fazer isso: -
dx = tweets['Hashtags']
for key, value in dx.items():
print key, value
Com o seguinte erro: -
Traceback (most recent call last):
File "<ipython-input-167-d66c278ec072>", line 2, in <module>
for key, value in dx.items():
File "C:\ANACONDA\lib\site-packages\pandas\core\generic.py", line 2740, in __getattr__
return object.__getattribute__(self, name)
AttributeError: 'Series' object has no attribute 'items'
ATUALIZAÇÃO:Consigo acessar a parte de texto do dicionário de hashtags aninhadas
tweets['Hashtags'][1][1]['text']
Out[209]: u'INDvPAK'
Eu quero criar um loop para anexar todas as hashtags na linha.