在Pandas中聚合列表行并保留唯一值的简便方法
Pandas按索引聚合列表并保留唯一值的实现方案
方法一:groupby结合自定义去重函数
假设你的Series名为s,可以通过分组后合并所有列表元素并去重实现:
import pandas as pd # 构造示例数据 s = pd.Series([[41, 13, 4, 50], [41, 13, 4, 5]], index=['A', 'A']) # 聚合去重(不保证元素顺序) result = s.groupby(level=0).apply(lambda x: list({num for sublist in x for num in sublist})) # 聚合去重并保留元素首次出现的顺序 result = s.groupby(level=0).apply(lambda x: list(dict.fromkeys([num for sublist in x for num in sublist])))
方法二:explode+分组去重+聚合
这种方法逻辑更直观,适合处理大数据量:
# 展开列表为单个元素行 exploded_s = s.explode() # 按索引分组取唯一值,再重新聚合为列表 result = exploded_s.groupby(level=0).unique().apply(list)
执行后得到的结果如下:
index A [41, 13, 4, 50, 5] dtype: object
内容的提问来源于stack exchange,提问作者salamander
相关产品推荐
相关产品推荐

