Группировать строки в фрейме данных - PullRequest
0 голосов
/ 16 января 2019

У меня есть DataFrame со столбцами, похожими на:

введите описание изображения здесь

Я хочу использовать pd.groupby для группировки строк по столбцу идентификаторов. Кроме того, я хочу использовать .agg () для применения функций к каждому столбцу.

Для столбцов с оценками я хочу применить 'np.average'. Например, для столбца «Поток оценки надежности A» весовые коэффициенты находятся в столбце «Поток A», для столбца «Поток оценки надежности B» в «Потоке B» и т. Д. С другой стороны, для столбцов с потоками я хочу использовать только сумму.

Итак, ожидаемый результат будет примерно таким:

введите описание изображения здесь

Как ты это делаешь?

Спасибо,

1 Ответ

0 голосов
/ 17 января 2019

Создать словарь, показывающий, как агрегировать каждый столбец.

dd = {k:'mean' for k in df.filter(regex='^Flow.*').columns.tolist()}
for i in df.filter(like='Relia'):
    dd[i] = 'sum'
dd

Выход:

{'Flow A': 'mean',
 'Flow B': 'mean',
 'Flow C': 'mean',
 'Flow D': 'mean',
 'Flow E': 'mean',
 'Reliabilty Score Flow A': 'sum',
 'Reliabilty Score Flow B': 'sum',
 'Reliabilty Score Flow C': 'sum',
 'Reliabilty Score Flow D': 'sum',
 'Reliabilty Score Flow E': 'sum'}

Затем используйте groupby с agg и словарем, дд:

df.groupby('ID').agg(dd).reindex(df.columns[1:], axis=1)
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...