聚合后的python pandas reattach列

时间:2016-08-03 03:24:56

标签: python pandas merge aggregate

我的DataFrame看起来像这样

exams = pd.DataFrame({'id1':['1x', '1x','2x','3x','3x'], 'id2':['a','a','b','a','a'],'data':[1,2,3,4,5]}) 

    id1    id2   data
0    1x      a      1
1    1x      a      2
2    2x      b      3
3    3x      a      4
4    3x      a      5

然后我将它汇总到

exams_agg = exams.groupby('id1').agg('mean')

然后exams_agg看起来像

       data
id1
 1x      1.5
 2x        3
 3x      4.5

我想将id2列重新连接到exams_agg。所以我在考虑创建一个查找表

lookup = exams[['id1', 'id2']]
exams_agg = pd.merge(exams_agg, lookup, left_index=True, right_on='id1')

但由于lookup包含重复的id对,exams_agg也包含重复项。什么是创建

的好方法
       data    id2
id1
 1x      1.5     a
 2x        3     b
 3x      4.5     a

1 个答案:

答案 0 :(得分:2)

如果唯一id1始终与同一id2对应,您只需在id2中添加groupby

In [5]: df.groupby(['id1', 'id2']).agg('mean')
Out[5]: 
         data
id1 id2      
1x  a     1.5
2x  b     3.0
3x  a     4.5