如何根据用户输入的数量为groupby创建一个函数?

时间:2016-02-19 02:45:13

标签: python function pandas

我有这两个功能:

def groupByTwoParaCounter(dfName,grpByCol,paraCol1):
    print dfName[grpByCol].groupby([dfName[paraCol1],dfName[grpByCol]]).count()

def groupByThreeParaCounter(dfName,grpByCol,paraCol1,paraCol2):
    print dfName[grpByCol].groupby([dfName[paraCol1],dfName[paraCol2],dfName[grpByCol]]).count()

以下是一些示例数据:

Doc_ID  Batch_Num  Lot_Num Clinic_ID  Owner_ID Patient_Age
e14231  12345      NA      u2y5142    mys71262 29

我想将它们组合成一个单独的功能。这就是我要找的东西:

  • 我有一个包含多个列的数据框。我希望用不同数量的输入列进行几次groupby操作。为此目的编写单个函数的好方法是什么?

1 个答案:

答案 0 :(得分:0)

这可以让你得到你想要的东西:

def groupByCounter(dfName, grpByCol, *args):
    items = []
    for arg in args:
        items.append(dfName[arg])
    items.append(dfName[grpByCol])        
    print dfName[grpByCol].groupby(items).count()

它使用*,python的参数解包运算符,它解压缩可变数量的参数。