Ich sammle Daten von Twitter, und jeder Tweet ist in Form eines Wörterbuchs.Wie referenziere ich einen Wert in einem Wörterbuch, wenn der Wert eine Liste von Strings ist?
Mein vollständiger Datensatz ist eine Liste mit Tausenden von Tweets (eine Liste von Wörterbüchern).
Ich möchte auf die Hashtags in jedem Tweet verweisen, aber ich brauche Hilfe herauszufinden, wie dies zu tun ist.
Hier ist ein Beispiel einer Liste von zwei Teil Tweets mit relevanten Daten:
twitter_tweets =
[{'created_at': 'Wed Oct 18 22:20:30 +0000 2017', 'id': 920776631102214144, 'entities': {'hashtags': ['#dataanalyst#', '#politics']} 'user': {'id': 119116331, 'statuses_count': 32796, 'verified': False, 'lang': 'en-'}, 'retweet_count': 0, 'favorite_count': 0}
{'created_at': 'Wed Oct 17 12:20:36 +0000 2017', 'id': 920776631106514144, 'entities': {'hashtags': ['#california', '#nationalparks']} 'user': {'id': 119159331, 'statuses_count': 32796, 'verified': False, 'lang': 'en-gb'}, 'retweet_count': 1, 'favorite_count': 2}]
Beachten Sie, dass die „Entitäten“ Schlüssel als Wert ein zweites Wörterbuch hat. In diesem zweiten Wörterbuch ist "hashtags" der Schlüssel und der Wert ist eine Liste von Hashtags.
Hier ist der Code, den ich eine Liste aller dieser Hashtags zu sammeln haben versucht eine Frequenz Serie zu erstellen:
def make_tweets_series(input_list, first_key, second_key):
final_keys_list = []
for line in input_list:
tweets_by_key = line[first_key][second_key]
final_keys_list.append(tweets_by_key)
series_key_values = pd.Series(final_keys_list).value_counts()
return series_key_values
hashtag_distribution_series = make_tweets_series(twitter_tweets, 'entities', 'hashtags')
Dieser Code funktionieren würde, glaube ich, wenn die „Hashtags“ Wert ein String war , aber es funktioniert nicht, weil "hashtags" eine Liste von Strings ist.
Wie kann ich jedes der Hashtags in diesen Listen referenzieren und sie in eine Serie einfügen?
Meine volle Fehlermeldung, mit der Zurückverfolgungs ist wie folgt:
Traceback (most recent call last):
File "<ipython-input-60-7623feb35c84>", line 13, in <module>
hashtag_distribution_series = make_tweets_series(twitter_tweets, 'entities', 'hashtags')
File "<ipython-input-60-7623feb35c84>", line 6, in make_tweets_series
series_key_values = pd.Series(final_keys_list).value_counts()
File "/home/tommy/anaconda3/lib/python3.6/site-packages/pandas/core/base.py", line 938, in value_counts
normalize=normalize, bins=bins, dropna=dropna)
File "/home/tommy/anaconda3/lib/python3.6/site-packages/pandas/core/algorithms.py", line 640, in value_counts
keys, counts = _value_counts_arraylike(values, dropna)
File "/home/tommy/anaconda3/lib/python3.6/site-packages/pandas/core/algorithms.py", line 685, in _value_counts_arraylike
keys, counts = f(values, dropna)
File "pandas/_libs/hashtable_func_helper.pxi", line 356, in pandas._libs.hashtable.value_count_object (pandas/_libs/hashtable.c:29440)
File "pandas/_libs/hashtable_func_helper.pxi", line 367, in pandas._libs.hashtable.value_count_object (pandas/_libs/hashtable.c:29189)
TypeError: unhashable type: 'list'
Wenn Sie einen Fehler posten, geben Sie bitte den gesamten Trace zurück – 0TTT0
Ist Ihnen klar, dass Hashtags eine Zeichenfolge sein müssen, wenn sie als Schlüssel verwendet werden? was bei Ihrer Eingabe nicht der Fall ist. Nicht sicher, ob es ein Schreibfehler oder ein Fehler ist. – utengr
@utengr Ja, das war ein Tippfehler. Ich werde es reparieren. – TJE