ein Wörterbuch der Wörterbücher der Form haben:erstellen Pandas Datenrahmen von Wörterbuch der Wörterbücher
{'user':{movie:rating} }
Zum Beispiel
{Jill': {'Avenger: Age of Ultron': 7.0,
'Django Unchained': 6.5,
'Gone Girl': 9.0,
'Kill the Messenger': 8.0}
'Toby': {'Avenger: Age of Ultron': 8.5,
'Django Unchained': 9.0,
'Zoolander': 2.0}}
ich diesen dict von dicts in eine Pandas Datenrahmen konvertieren wollen mit Spalte 1 der Benutzername und die anderen Spalten die Filmbewertungen zB
user Gone_Girl Horrible_Bosses_2 Django_Unchained Zoolander etc. \
Howev Einige Benutzer haben die Filme nicht bewertet und daher sind diese Filme nicht in den Werten() für diesen Benutzerschlüssel enthalten(). Es wäre in diesen Fällen nett, den Eintrag nur mit NaN zu füllen.
Ab sofort iterieren ich über die Tasten, füllen Sie eine Liste, und dann diese Liste verwenden, um einen Datenrahmen zu erstellen:
data=[]
for i,key in enumerate(movie_user_preferences.keys()):
try:
data.append((key
,movie_user_preferences[key]['Gone Girl']
,movie_user_preferences[key]['Horrible Bosses 2']
,movie_user_preferences[key]['Django Unchained']
,movie_user_preferences[key]['Zoolander']
,movie_user_preferences[key]['Avenger: Age of Ultron']
,movie_user_preferences[key]['Kill the Messenger']))
# if no entry, skip
except:
pass
df=pd.DataFrame(data=data,columns=['user','Gone_Girl','Horrible_Bosses_2','Django_Unchained','Zoolander','Avenger_Age_of_Ultron','Kill_the_Messenger'])
Aber das gibt mir nur einen Datenrahmen von Nutzern, die alle bewerteten Filmen in der Satz.
Mein Ziel ist es, an die Datenliste durch Iterieren über die Film-Etiketten (anstelle der Brute-Force-Ansatz oben) anfügen, und zweitens erstellen Sie einen Datenrahmen, der alle Benutzer enthält und Null-Werte in die Elemente, die tun habe keine Filmbewertungen.
Gibt es eine Möglichkeit, die Benutzernamen zu einer einzelnen Spalte anstelle eines Indexes zu machen? – Feynman27
pd.DataFrame.from_dict (d, orient = 'index'). Reset_index() –
Großartig. Vielen Dank! – Feynman27