代码之家  ›  专栏  ›  技术社区  ›  Lynn

按几列分组,并根据一列中的分类值求和(Pandas)

  •  1
  • Lynn  · 技术社区  · 3 年前

    我希望将几个列分组,并根据一列中的分类值求和。

    数据

    name    size    type
    AA      9385    FALSE
    AA      9460    FALSE
    AA      9572    TRUE
    AA      9680    
    BB      10      TRUE
    BB      10      TRUE
    BB      20      FALSE
    BB      20      FALSE
            
        
    

    渴望的

    name    size    type
    AA      9572    TRUE
    AA      18845   FALSE
    AA      9680    
    BB      20      TRUE
    BB      40      FALSE
    BB       
    

    正在执行

    df = df.groupby('name').agg({'size': 'sum', 'type': lambda x: x.value_counts().idxmax()})
    

    但是,这似乎已经删除了Null值。欢迎提出任何建议。

    1 回复  |  直到 3 年前
        1
  •  1
  •   Scott Boston    3 年前

    使用 dropna=False 分组依据:

    df.groupby(['name', 'type'], dropna=False, as_index=False)['size'].sum()
    

    输出:

      name   type   size
    0   AA  False  18845
    1   AA   True   9572
    2   AA    NaN   9680
    3   BB  False     40
    4   BB   True     20