агрегирование Python с помощью функции по умолчанию - PullRequest
0 голосов
/ 25 июня 2018

У меня большой фрейм данных с> 100 столбцами, я хочу сгруппировать его по столбцу id и принять первое значение большинства столбцов, но я хочу предоставить конкретную функцию агрегирования для нескольких столбцов. Ищете простой способ сделать это. Любая помощь будет оценена.

    name  score_1  score_2  score_3.........score_100
0   Foo        5       10       10            10
1  Baar       10       15       20            10
2   Foo       15       10       30            10
3  Baar       10       25       40            10

Я хочу сгруппировать вышеуказанный фрейм данных по имени, сохраняя «первое» значение оценки столбца от _1 до Score_98 и «сумму» показателя_99 и «среднее» значения_100_1004 *

Я пытался использовать df.groupby (name) .agg (collate) .reset_index (), мне нужна помощь в написании функции collate или лучший способ сделать это. Спасибо

1 Ответ

0 голосов
/ 25 июня 2018

Вы можете использовать словарное понимание и объединить 2 словаря с помощью синтаксиса {**d1, **d2}:

funcs = {**{'score_'+str(i): 'first' for i in range(1, 3)},
         **{'score_99': 'sum', 'score_100': 'mean'}}

res = df.groupby('name').agg(funcs).reset_index()

print(res)

   name  score_1  score_2  score_99  score_100
0  Baar       10       15        60         10
1   Foo        5       10        40         10

Выше приведен пример ввода:

print(df)

   name  score_1  score_2  score_99  score_100
0   Foo        5       10        10         10
1  Baar       10       15        20         10
2   Foo       15       10        30         10
3  Baar       10       25        40         10
...