熊猫从数据框创建配对数据

时间:2020-11-05 20:18:51

标签: python pandas dataframe

我有一个像这样的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

反正有这样做吗?谢谢

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()是另一种选择。