4
Я долгое время искал в сети, но безрезультатно. Пожалуйста, помогите или попытаться дать некоторые идеи, как достичь этогоКак преобразовать dataframe в dict в Python3
я использую панды читать MovieLens CSV файл
ratings = pd.read_table('ml-latest-small/ratings.csv')
тогда я получаю таблицу, как это:
userId movieId rating timestamp
1 31 2.5 1260759144
1 1029 3.0 1260759179
1 1061 3.0 1260759182
1 1129 2.0 1260759185
1 1172 4.0 1260759205
2 31 3.0 1260759134
2 1111 4.5 1260759256
Я хочу, чтобы преобразовать это Сыроватского как
{userId:{movieId:rating}}
например
{
1:{31:2.5,1029:3.0,1061,3.0,1129:2.0,1172:4.0},
2:{31:3.0,1111:4.5}
}
Я попробовал этот код, но не смог:
for user in ratings['userId']:
for movieid in ratings['movieId']:
di_rating.setdefault(user,{})
di_rating[user][movieid]=ratings['rating'][ratings['userId'] == user][ratings['movieId'] == movieid]
Может кто-то пожалуйста, помогите мне?
Спасибо большое! Но кажется, что 'movieId' преобразуется в тип float – Alfred
Вы можете использовать 'int' -' d = df.groupby ('userId'). Apply (lambda y: {int (x.movieId): x.rating для i , x в y.iterrows()}). to_dict() ' – jezrael