英文:
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
通过集体智慧和协作来改善编程学习和解决问题的方式。致力于成为全球开发者共同参与的知识库,让每个人都能够通过互相帮助和分享经验来进步。


评论