我有一个像这样的pd.DataFrame
User M&Ms Skittles Snickers Laffy Taffy Caramel Chew
0 Lara 3 0 0 0 0
1 Daisy 4 0 1 1 0
2 Alyx 0 0 0 0 5
3 Sarah 0 3 0 0 0
我想创建一个看起来像这样的数据框
user item rating
0 Lara m_ms 3
1 Lara snickers 5
2 Daisy m_ms 4
3 Daisy laffy_taffy 1
4 Alyx caramel_chew 5
5 Sarah skittles 3
6 Sarah snickers 2
反正有这样做吗?谢谢
答案 0 :(得分:2)
使用melt
+ query
df.melt('User').query('value > 0')
User variable value
0 Lara M&Ms 3
1 Daisy M&Ms 4
7 Sarah Skittles 3
9 Daisy Snickers 1
13 Daisy Laffy Taffy 1
18 Alyx Caramel Chew 5
答案 1 :(得分:0)
您可以使用df.stack()
# First set the index to user
df.set_index(‘user’, inplace =True)
# then stack
df_new = df.stack()
# reset index
df_new.reset_index(inplace=True)
使用pd.melt()是另一种选择。