Python - пользовательская функция Group_by не работает для нескольких столбцов - PullRequest
0 голосов
/ 14 ноября 2018
def agg_count(df, group_field):
    grouped = df.groupby(group_field, as_index=False).size()
    #grouped.sort(ascending = False)

    grouped = pd.DataFrame(grouped).reset_index()
    grouped.columns = [group_field, 'Count']
    return grouped

Над функцией, работает нормально, если я вызываю ее с одним столбцом, как показано ниже:

agg_count(app_snap1_extract, 'APP_STATUS_C')

Сбой, если я вызываю функцию с несколькими столбцами (я хотел настроить функцию так, чтобы яможно сгруппировать по N столбцов, представленных в качестве аргументов)

Кто-нибудь может помочь?

1 Ответ

0 голосов
/ 14 ноября 2018

При передаче нескольких столбцов для groupby в пандах, вам нужно передать его как list.

grouped = df.groupby(['a','b'])

Итак, убедитесь, что group_field - это список, подобный приведенному выше.Это будет работать.

Просто измените свою функцию следующим образом:

def agg_count(df, group_field):
    grouped = df.groupby(group_field, as_index=False).size()
    #grouped.sort(ascending = False)

    grouped = pd.DataFrame(grouped).reset_index()
    grouped.columns = group_field + ['Count']
    return grouped
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...