У меня есть скрипт, который генерирует фрейм данных Pandas с различным количеством столбцов значений. Например, этот df может быть
import pandas as pd
df = pd.DataFrame({
'group': ['A', 'A', 'A', 'B', 'B'],
'group_color' : ['green', 'green', 'green', 'blue', 'blue'],
'val1': [5, 2, 3, 4, 5],
'val2' : [4, 2, 8, 5, 7]
})
group group_color val1 val2
0 A green 5 4
1 A green 2 2
2 A green 3 8
3 B blue 4 5
4 B blue 5 7
Моя цель - получить сгруппированное среднее значение для каждого из столбцов значений. В этом конкретном случае (с двумя столбцами значений) я могу использовать
df.groupby('group').agg({"group_color": "first", "val1": "mean", "val2": "mean"})
group_color val1 val2
group
A green 3.333333 4.666667
B blue 4.500000 6.000000
но это не работает, когда рассматриваемый фрейм данных имеет больше столбцов значений (val3, val4 и т.д.). Есть ли способ динамически принять среднее значение "все остальные столбцы" или "все столбцы, содержащие в своих именах val"?