英文:
Groupby several columns and take the sum based off of categorical values within a column (Pandas)
问题
我正在寻找根据某一列中的分类值对多列进行分组并求和的方法。
数据
姓名 大小 类型
AA 9385 FALSE
AA 9460 FALSE
AA 9572 TRUE
AA 9680
BB 10 TRUE
BB 10 TRUE
BB 20 FALSE
BB 20 FALSE
期望的结果
姓名 大小 类型
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()})
然而,这似乎已经移除了空值。有任何建议吗?
英文:
I am looking to groupby several columns and take the sum based off of categorical values within a column.
Data
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
Desired
name size type
AA 9572 TRUE
AA 18845 FALSE
AA 9680
BB 20 TRUE
BB 40 FALSE
BB
Doing
df = df.groupby('name').agg({'size': 'sum', 'type': lambda x: x.value_counts().idxmax()})
However, this appears to have removed Null values. Any suggestion is appreciated.
答案1
得分: 1
使用dropna=False
在groupby中:
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
英文:
Use dropna=False
in groupby:
df.groupby(['name', 'type'], dropna=False, as_index=False)['size'].sum()
Output:
name type size
0 AA False 18845
1 AA True 9572
2 AA NaN 9680
3 BB False 40
4 BB True 20
通过集体智慧和协作来改善编程学习和解决问题的方式。致力于成为全球开发者共同参与的知识库,让每个人都能够通过互相帮助和分享经验来进步。
评论