¿Cómo crear marcos de datos pandas desde la API de búsqueda de Twitter?

Estoy trabajando con la API de búsqueda de Twitter que devuelve un diccionario de diccionarios. Mi objective es crear un dataframe a partir de una lista de claves en el diccionario de respuestas.

Ejemplo de respuesta API aquí: Ejemplo de respuesta

Tengo una lista de claves dentro del diccionario de Estados

keys = ["created_at", "text", "in_reply_to_screen_name", "source"] 

Me gustaría recorrer cada valor de clave devuelto en el diccionario de Estados y colocarlos en un dataframe con las claves como las columnas.

Actualmente, tenga un código para recorrer una sola tecla individualmente y asignarlo a la lista, luego adjuntarlo al dataframe, pero desea una forma de hacer más de una tecla a la vez. Código actual a continuación:

 #w is the word to be queired w = 'keyword' #count of tweets to return count = 1000 #API call query = twitter.search.tweets(q= w, count = count) def data_l2 (q, k1, k2): data = [] for results in q[k1]: data.append(results[k2]) return(data) screen_names = data_l3(query, "statuses", "user", "screen_name") data = {'screen_names':screen_names, 'tweets':tweets} frame=pd.DataFrame(data) frame 

Voy a compartir una solución más genérica que se me ocurrió, ya que estaba trabajando con la API de Twitter. Digamos que usted tiene las identificaciones de los tweets que desee a buscar en una lista llamada my_ids :

 # Fetch tweets from the twitter API using the following loop: list_of_tweets = [] # Tweets that can't be found are saved in the list below: cant_find_tweets_for_those_ids = [] for each_id in my_ids: try: list_of_tweets.append(api.get_status(each_id)) except Exception as e: cant_find_tweets_for_those_ids.append(each_id) 

Luego, en este bloque de código, aislamos la parte json de cada objeto de estado tweepy que hemos descargado y los agregamos a todos en una lista …

 my_list_of_dicts = [] for each_json_tweet in list_of_tweets: my_list_of_dicts.append(each_json_tweet._json) 

… y escribimos esta lista en un archivo txt:

 with open('tweet_json.txt', 'w') as file: file.write(json.dumps(my_list_of_dicts, indent=4)) 

Ahora vamos a crear un DataFrame a partir del archivo tweet_json.txt (he agregado algunas claves que eran relevantes para mi caso de uso en el que estaba trabajando, pero en su lugar puede agregar sus claves específicas):

 my_demo_list = [] with open('tweet_json.txt', encoding='utf-8') as json_file: all_data = json.load(json_file) for each_dictionary in all_data: tweet_id = each_dictionary['id'] whole_tweet = each_dictionary['text'] only_url = whole_tweet[whole_tweet.find('https'):] favorite_count = each_dictionary['favorite_count'] retweet_count = each_dictionary['retweet_count'] created_at = each_dictionary['created_at'] whole_source = each_dictionary['source'] only_device = whole_source[whole_source.find('rel="nofollow">') + 15:-4] source = only_device retweeted_status = each_dictionary['retweeted_status'] = each_dictionary.get('retweeted_status', 'Original tweet') if retweeted_status == 'Original tweet': url = only_url else: retweeted_status = 'This is a retweet' url = 'This is a retweet' my_demo_list.append({'tweet_id': str(tweet_id), 'favorite_count': int(favorite_count), 'retweet_count': int(retweet_count), 'url': url, 'created_at': created_at, 'source': source, 'retweeted_status': retweeted_status, }) tweet_json = pd.DataFrame(my_demo_list, columns = ['tweet_id', 'favorite_count', 'retweet_count', 'created_at', 'source', 'retweeted_status', 'url'])