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

如何用Pandas按多列分组合并行数据?(排除COLUMN2为YELLOW的行)

Pandas实现指定条件的分组合并

方案一:高效拆分合并法(推荐)

这种方法逻辑清晰,执行效率更高,适合数据量较大的场景:

import pandas as pd

# 构造你的原始数据(实际使用时替换成读取你的数据源,比如pd.read_csv)
data = {
    'COLUMN1': ['APPLE', 'BANANA', 'BANANA', 'GRAPE', 'GRAPE', 'GRAPE', 'GRAPE', 'GRAPE', 'MELON', 'MELON'],
    'COLUMN2': ['RED', 'YELLOW', 'YELLOW', 'VIOLET', 'VIOLET', 'VIOLET', 'PURPLE', 'PURPLE', 'GREEN', 'GREEN'],
    'COLUMN3': ['JOHN, JANE', 'SMITH', 'EMILY', 'JESSICA', 'REIRA', 'EMMA', 'JOE', 'LISA', 'RIO', 'REIRA']
}
df = pd.DataFrame(data)

# 1. 拆分数据:分离COLUMN2为YELLOW的行和其他行
yellow_rows = df[df['COLUMN2'] == 'YELLOW']
other_rows = df[df['COLUMN2'] != 'YELLOW']

# 2. 对非YELLOW行分组合并COLUMN3
merged_others = other_rows.groupby(['COLUMN1', 'COLUMN2'])['COLUMN3'].agg(', '.join).reset_index()

# 3. 合并两部分数据并排序
result = pd.concat([merged_others, yellow_rows], ignore_index=True)
result = result.sort_values('COLUMN1').reset_index(drop=True)

print(result)

方案二:自定义分组函数法

如果需要更灵活的分组逻辑,可以用自定义函数处理每个分组:

import pandas as pd

df = pd.DataFrame(data)  # 同方案一的数据源

def process_group(group):
    # 如果当前分组的COLUMN2是YELLOW,直接返回原组
    if group['COLUMN2'].iloc[0] == 'YELLOW':
        return group
    # 否则合并COLUMN3,生成单行数据
    return pd.DataFrame({
        'COLUMN1': [group['COLUMN1'].iloc[0]],
        'COLUMN2': [group['COLUMN2'].iloc[0]],
        'COLUMN3': [', '.join(group['COLUMN3'])]
    })

# 按COLUMN1和COLUMN2分组,应用自定义函数后合并结果
result = df.groupby(['COLUMN1', 'COLUMN2'], group_keys=False).apply(process_group).reset_index(drop=True)
print(result)

思路说明

  1. 分组依据:核心是按COLUMN1(水果)和COLUMN2(颜色)分组,确保同一水果同颜色的行被归为一组。
  2. 条件判断:针对COLUMN2为YELLOW的分组,跳过合并操作,保留原始行;其他分组则将COLUMN3的所有值用逗号拼接成单个字符串。
  3. 结果整合:无论是拆分合并还是自定义函数,最终都需要把处理后的部分和保留的YELLOW行整合,排序后得到目标格式。

内容的提问来源于stack exchange,提问作者now

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.12 00:55:38