合并到pandas中的list groupby中

时间:2017-09-20 06:25:59

标签: python pandas

我有一个这样的数据框

    id  sid frame   type    
    1   10  15      person
    2   11  45      person  
    2   11  45      animal  
    3   13  75      person  
    4   14  45      person  

我的目标是在此转换此数据框。

    id  sid frame   type    
    1   10  15      person
    2   11  45      [person, animal]    
    3   13  75      person  
    4   14  45      person

我正在寻找一种方法来合并type列与相同的id, sid, frame

1 个答案:

答案 0 :(得分:2)

您可以groupby使用list条件:

df = (df.groupby(['id','sid','frame'])['type']
       .apply(lambda x: x.tolist() if len(x) > 1 else x.values[0])
       .reset_index())
print (df)
   id  sid  frame              type
0   1   10     15            person
1   2   11     45  [person, animal]
2   3   13     75            person
3   4   14     45            person

如果所有值都应为list s:

df = (df.groupby(['id','sid','frame'])['type']
       .apply(list)
       .reset_index())
print (df)
   id  sid  frame              type
0   1   10     15          [person]
1   2   11     45  [person, animal]
2   3   13     75          [person]
3   4   14     45          [person]
相关问题