代码之家  ›  专栏  ›  技术社区  ›  Franco Piccolo

为什么Pandas给AttributeError:“SeriesGroupBy”对象没有属性“pct”?

  •  1
  • Franco Piccolo  · 技术社区  · 6 年前

    我正在尝试传递一个用户定义的函数 pct agg 方法,如果我只传递该函数,但当我使用dictionary格式定义函数时,它就不起作用了。有人知道为什么吗?

    import pandas as pd
    
    df = pd.DataFrame([[1, 2, 3],
                       [4, 5, 6],
                       [7, 8, 9]],
                       columns=['A', 'B', 'C'])
    
    pct = lambda x: len(x)/len(df)
    
    df.groupby('A').agg(pct)
    

        B   C
    A       
    1   0.333333    0.333333
    4   0.333333    0.333333
    7   0.333333    0.333333
    

    aggs = {'B':['pct']}
    df.groupby('A').agg(aggs)
    

    返回以下错误:

    AttributeError: 'SeriesGroupBy' object has no attribute 'pct'
    
    1 回复  |  直到 6 年前
        1
  •  9
  •   jezrael    6 年前

    有一根绳子 'pct' ,需要变量 pct -通过删除lambda函数 ''

    aggs = {'B':pct}
    print(df.groupby('A').agg(aggs))
    
              B
    A          
    1  0.333333
    4  0.333333
    7  0.333333