2016-08-03 2 views
1

Мой 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 содержит повторяющиеся пары идентификаторов, exams_agg содержит дубликаты, а также. Что такое хороший способ создать

 data id2 
id1 
1x  1.5  a 
2x  3  b 
3x  4.5  a 

ответ

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 
+0

Они. Огромное спасибо. Я должен был подумать об этом. – nos

Смежные вопросы