我希望将几个列分组,并根据一列中的分类值求和。
数据
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值。欢迎提出任何建议。
使用 dropna=False 分组依据:
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