从矩阵到DataFrame的Pandas

问题描述 投票:0回答:2

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

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

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

pandas numpy dataframe
2个回答
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

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
© www.soinside.com 2019 - 2024. All rights reserved.