У меня есть словарь словарей вида:создать панда dataframe из словаря словарей
{'user':{movie:rating} }
Например,
{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}}
Я хочу, чтобы преобразовать эту Dict из dicts в панде dataframe с столбец 1 имя пользователя и другие столбцы рейтинги фильмов, т.е.
user Gone_Girl Horrible_Bosses_2 Django_Unchained Zoolander etc. \
Howev er, некоторые пользователи не оценивали фильмы и поэтому эти фильмы не включены в значения() для этого пользовательского ключа(). Было бы неплохо в этих случаях просто заполнить запись NaN.
В настоящее время, я перебирать ключи, заполнить список, а затем использовать этот список для создания dataframe:
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'])
Но это только дает мне dataframe пользователей, которые оценили все фильмы в набор.
Моя цель состоит в том, чтобы добавить к списку данных, итерации над метками фильма (вместо приведенного выше подхода к грубой силе) и, во-вторых, создать фрейм данных, который включает всех пользователей, и который устанавливает нулевые значения в элементах, которые делают не имеют рейтингов фильмов.
Есть ли способ сделать имена пользователей отдельными столбцами вместо индекса? – Feynman27
pd.DataFrame.from_dict (d, orient = 'index'). Reset_index() –
Отлично. Спасибо! – Feynman27