Предположим, что мы берем панду с данными...
name age family
0 john 1 1
1 jason 36 1
2 jane 32 1
3 jack 26 2
4 james 30 2
Тогда сделай groupby()
...
group_df = df.groupby('family')
group_df = group_df.aggregate({'name': name_join, 'age': pd.np.mean})
Затем выполните некоторую операцию агрегирования/суммирования (в моем примере моя функция name_join
объединяет имена):
def name_join(list_names, concat='-'):
return concat.join(list_names)
Таким образом, сгруппированные итоговые результаты:
age name
family
1 23 john-jason-jane
2 28 jack-james
Вопрос:
Существует ли быстрый и эффективный способ получить следующую информацию из агрегированной таблицы?
name age family
0 john 23 1
1 jason 23 1
2 jane 23 1
3 jack 28 2
4 james 28 2
(Примечание: значения в столбце age
являются лишь примерами, мне все равно, какую информацию я теряю после усреднения в этом конкретном примере)
То, как я думал, что смогу это сделать, выглядит не слишком эффективно:
- создать пустой фрейм данных
- от каждой строки в
group_df
имена - вернуть фрейм данных с таким количеством строк, сколько есть имен в начальной строке
- добавить вывод в пустой фрейм данных