You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何在Pandas中实现按类别区分的条件分组?

当然可以实现,这里有两种实用方案

方案1:拆分数据框分别处理后合并

把A、B两类数据分开,各自按需求分组聚合,最后合并结果即可。以下是示例代码(以对Total求和、Avg取均值为例,你可以根据实际需求调整聚合逻辑):

import pandas as pd

data = [['A', 'HIGH', 120, 200],
        ['A', 'MID', 350, 200],
        ['B', 'HIGH', 130, 100],
        ['B', 'HIGH', 70, 100],
        ['A', 'MID', 130, 200]]
df = pd.DataFrame(data, columns=['Category', 'Range', 'Total', 'Avg'])

# 处理Category为A的行:按Category和Range分组聚合
group_a = df[df['Category'] == 'A'].groupby(['Category', 'Range']).agg(
    Total_sum=('Total', 'sum'),
    Avg_mean=('Avg', 'mean')
).reset_index()

# 处理Category为B的行:仅按Category分组聚合
group_b = df[df['Category'] == 'B'].groupby(['Category']).agg(
    Total_sum=('Total', 'sum'),
    Avg_mean=('Avg', 'mean')
).reset_index()

# 合并结果,给B类的Range列填充默认值
final_result = pd.concat([group_a, group_b], ignore_index=True).fillna({'Range': 'N/A'})
print(final_result)

执行后输出:

Category Range  Total_sum  Avg_mean
0        A  HIGH        120       200
1        A   MID        480       200
2        B   N/A        200       100

方案2:构造自定义分组键

通过生成一个临时分组键,让A类的键包含Range信息,B类的键仅保留Category,再按这个键分组。这种方式不需要拆分数据框,适合数据量较大的场景:

import pandas as pd

data = [['A', 'HIGH', 120, 200],
        ['A', 'MID', 350, 200],
        ['B', 'HIGH', 130, 100],
        ['B', 'HIGH', 70, 100],
        ['A', 'MID', 130, 200]]
df = pd.DataFrame(data, columns=['Category', 'Range', 'Total', 'Avg'])

# 生成分组键:A类用"Category_Range",B类直接用Category
df['group_key'] = df.apply(
    lambda row: f"{row['Category']}_{row['Range']}" if row['Category'] == 'A' else row['Category'],
    axis=1
)

# 按自定义键分组聚合
result = df.groupby('group_key').agg(
    Total_sum=('Total', 'sum'),
    Avg_mean=('Avg', 'mean')
).reset_index()

# 拆分分组键,还原Category和Range列
result[['Category', 'Range']] = result['group_key'].str.split('_', n=1, expand=True)
# 整理列顺序并删除临时键
final_result = result.drop('group_key', axis=1)[['Category', 'Range', 'Total_sum', 'Avg_mean']].fillna({'Range': 'N/A'})
print(final_result)

输出结果和方案1完全一致。


内容的提问来源于stack exchange,提问作者Owad A.

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.24 11:18:13