重塑Pandas Dataframe:将唯一列值作为列名称

时间:2015-02-25 19:35:06

标签: python pandas data-manipulation

我有一个表示一对多标记关系的数据框,列名为'user_id'和'tags'。 user_id可以与许多标签相关联,但我想重新排列我的数据框,使每行只有一个user_id,每个标签值都是它自己的列。

即。我有:

User_id, Tags

1, Dresses,    
1, Accessories,
2, Dresses,
2, Hats,

并且想要:

User_id, Dresses, Accessories, Hats,    
1,        1,         1,         0,
2,        1,          0,         1,

OR

User_id, Dresses, Accessories, Hats,
1,        True,         True,         False,    
2,        True,          False,         True,

1 个答案:

答案 0 :(得分:0)

您可以使用get_dummiesgroupby

df =pd.DataFrame({'user_id':[1,1,2,2],'tags':['Dresses','Accessories','Dresses','Hats']})
pd.get_dummies(df).groupby('user_id').max()

返回:

       tags_Accessories     tags_Dresses    tags_Hats
user_id             
1       1                   1                0
2       0                   1                1