我有一个矩阵,用户项目矩阵,我从:
生成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
我无法弄清楚如何。建议?
答案 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