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

如何去除DataFrame中重复品牌条目并合并对应口味列内容

解决方案

可以通过分组聚合+去重的方式实现需求,具体两种方法如下:

方法一:分组聚合后匹配原始顺序

  1. 按brand分组,聚合生成两个结果:保留每个品牌的第一个style值,将同一品牌的所有flavour用逗号拼接
  2. 按原始数据中品牌出现的顺序重新排列结果

代码实现:

import pandas as pd

# 修正原代码:flavour的元素需添加引号,否则会因未定义变量报错
df = pd.DataFrame({
    'brand': ['Yum Yum', 'ByRice', 'LuxSoba', 'Indomie', 'Indomie'],
    'style': ['cup', 'cup', 'cup', 'pack', 'pack'],
    'flavour': ['chili', 'chicken', 'chili', 'beef', 'cheese']
})

# 分组聚合操作
agg_result = df.groupby('brand').agg(
    style=('style', 'first'),
    flavour=('flavour', ', '.join)
).reset_index()

# 还原原始数据中品牌的出现顺序
final_df = agg_result.set_index('brand').loc[df['brand'].unique()].reset_index()

print(final_df)

运行结果:

brand style      flavour
0  Yum Yum   cup        chili
1  ByRice   cup      chicken
2  LuxSoba   cup        chili
3  Indomie  pack  beef, cheese

方法二:用transform生成合并列后去重

  1. 对brand分组,用transform生成每个行对应的合并后flavour值
  2. 删除重复的品牌条目,保留第一行并整理列名

代码实现:

import pandas as pd

df = pd.DataFrame({
    'brand': ['Yum Yum', 'ByRice', 'LuxSoba', 'Indomie', 'Indomie'],
    'style': ['cup', 'cup', 'cup', 'pack', 'pack'],
    'flavour': ['chili', 'chicken', 'chili', 'beef', 'cheese']
})

# 生成每个品牌对应的合并口味列
df['merged_flavour'] = df.groupby('brand')['flavour'].transform(', '.join)

# 去重并整理列
final_df = df.drop_duplicates(subset='brand').drop(columns='flavour').rename(columns={'merged_flavour': 'flavour'})

print(final_df)

运行结果与方法一完全一致。


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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.25 13:22:11