Pandas GroupBy能否将目标值单独分组,其余归为‘其他’组?
目标值单独分组+其余归为Other的聚合方案
针对你需求的简洁Pythonic实现,用pandas可以直接通过分组列的转换来完成,无需拆分合并数据集:
步骤1:构造示例数据
import pandas as pd df = pd.DataFrame({ 'Col-1': ['A', 'A', 'B', 'B', 'C'], 'Col-2': [2, 3, 1, 4, 7] })
方法1:新增分组列后聚合(直观易懂)
用numpy.where快速替换非目标值为Other,再分组求和:
import numpy as np # 生成分组标识 df['Group'] = np.where(df['Col-1'] == 'A', 'A', 'Other') # 分组聚合 result = df.groupby('Group')['Col-2'].sum()
方法2:直接在groupby中转换(更简洁,无需新增列)
利用apply或mask直接在分组逻辑里处理,一步到位:
# 方式A:lambda表达式 result = df.groupby(df['Col-1'].apply(lambda x: x if x == 'A' else 'Other'))['Col-2'].sum() # 方式B:pd.Series.mask result = df.groupby(df['Col-1'].mask(df['Col-1'] != 'A', 'Other'))['Col-2'].sum()
最终输出结果
无论哪种方法,都会得到:
Group A 5 Other 12 Name: Col-2, dtype: int64
这些方法通过直接转换分组维度,避免了拆分合并的繁琐操作,完全符合Pythonic的简洁高效原则。
内容的提问来源于stack exchange,提问作者Jason
相关产品推荐
相关产品推荐

