Как разделить записи на основе строк и столбцов в фрейме данных pandas

#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