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

如何按Pandas DataFrame分组标签获取另一列的唯一值列表

解决Pandas按分组提取唯一值列表的问题

原始数据

现有包含Brand和color列的DataFrame:

import pandas as pd

df = pd.DataFrame({'Brand': ['VW', 'VW', 'BMW', 'BMW', 'Mercedes'],
                   'color': ['red', 'red', 'red', 'blue', 'black']})

# 输出原始数据
print(df)

输出结果:

Brand  color
0        VW    red
1        VW    red
2       BMW    red
3       BMW   blue
4  Mercedes  black

需求

针对Brand列的每个唯一值,获取对应的color列所有唯一值的列表,期望输出:

Brand       colors
0        VW        [red]
1       BMW  [red, blue]
2  Mercedes      [black]

解决方案

方法一:分组后直接聚合唯一值

通过groupby分组,结合agg和lambda函数提取每个组的唯一color并转为列表:

# 分组聚合
result = df.groupby('Brand')['color'].agg(lambda x: list(x.unique())).reset_index()
# 修改列名
result.columns = ['Brand', 'colors']

print(result)

方法二:先去重再分组聚合(更高效)

如果数据量较大,先去除重复的Brand-color组合,再分组合并列表,能提升效率:

# 去重后分组
result = df.drop_duplicates().groupby('Brand')['color'].agg(list).reset_index()
result.columns = ['Brand', 'colors']

print(result)

两种方法都能得到目标输出。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.13 11:08:17