Python-Group_by自定义函数不适用于多列

时间:2018-11-14 12:04:14

标签: python pandas group-by

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 :(得分:0)

在熊猫中为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