从矩阵到DataFrame的大熊猫

时间:2017-12-16 19:43:28

标签: pandas numpy dataframe

我有一个矩阵,用户项目矩阵,我从:

生成
matrix = df.pivot(index='user', columns='item', values='rating')

矩阵的每一行对应一个用户,每一列对应一个项目。 有序的用户和项目列表存储在两个列表中,以便第i个用户列表元素对应于第i个矩阵行中第i个用户的id。

在对该矩阵进行一些处理之后,我想切换回带有树列的DataFrame(用户,项目,评级)

   user  item  rating
0     1  1907     4.0
1     1  1028     5.0
2     1   608     4.0
3     1  2692     4.0
4     1  1193     5.0

我无法弄清楚如何。建议?

2 个答案:

答案 0 :(得分:1)

给定这种格式的数据框 -

item  608   1028  1193  1907  2692
user                              
1      4.0   5.0   5.0   4.0   4.0

您可以stack您的数据,然后重置索引 -

df.stack().reset_index(name='rating')

   user  item  rating
0     1   608     4.0
1     1  1028     5.0
2     1  1193     5.0
3     1  1907     4.0
4     1  2692     4.0

答案 1 :(得分:0)

您可以使用melt

df_tab = df.reset_index().melt(id_vars='user',value_name='ratings')

输出:

   user  item  ratings
0     1   608      4.0
1     1  1028      5.0
2     1  1193      5.0
3     1  1907      4.0
4     1  2692      4.0

并回到矩阵:

matrix = df_tab.pivot(index='user', columns='item', values='ratings')

输出:

item  1028  1193  1907  2692  608
user                             
1      5.0   5.0   4.0   4.0  4.0