#python #python-3.x #pandas #dataframe
#python #python-3.x #pandas #фрейм данных
Вопрос:
У меня есть фрейм данных, который выглядит следующим образом:
'0' '1' '2'
0 5 4 0
1 3 0 0
2 1 0 2
Где указано название столбцов (‘0’, ‘1’, ‘2’, …) представляют идентификаторы пользователей, индекс представляет идентификаторы фильмов, и каждая запись обозначает рейтинг, присвоенный пользователем этому фильму.
Я хотел бы создать новый фрейм данных, основанный на предыдущем, который выглядит следующим образом:
user_id movie_id rating
0 0 0 5
1 0 1 3
2 0 2 1
3 1 0 4
4 1 1 0
5 1 2 0
6 2 0 0
7 2 1 0
8 2 2 2
Я новичок в pandas, и мне было интересно, как это сделать, не перебирая все записи.
Ответ №1:
Вы можете получить его с stack()
помощью , а затем reset_index()
:
df = df.stack().reset_index()
df.columns = ['user_id','movie_id','rating']
print(df)
user_id movie_id rating
0 0 0 5
1 0 1 4
2 0 2 0
3 1 0 3
4 1 1 0
5 1 2 0
6 2 0 1
7 2 1 0
8 2 2 2