如何合并DataFrame中列表类型列的元素并去重?
解决DataFrame列表列合并去重问题
你当前的方法df['b'].drop_duplicates().to_list()是对整个子列表去重,而非提取子列表内的元素合并,所以得到的是列表的列表。以下两种方法可实现需求:
方法1:用explode拆分后去重
explode会将列表类型的列元素拆分为单独行,后续再去重转列表即可:
# 拆分列表元素为单行 exploded_col = df['b'].explode() # 去重并转为目标列表 unique_list = exploded_col.drop_duplicates().tolist()
方法2:用itertools.chain合并所有子列表
通过chain直接将所有子列表的元素拼接成一个迭代器,再去重(用dict.fromkeys可保留元素首次出现的顺序):
import itertools # 合并所有子列表的元素 combined_elements = itertools.chain.from_iterable(df['b']) # 去重并转为列表(保持顺序) unique_list = list(dict.fromkeys(combined_elements))
两种方法都能得到你需要的['Red', 'Blue', 'Green', 'Purple', 'Yellow']结果:小数据量用explode更直观,大数据量用itertools效率更高。
内容的提问来源于stack exchange,提问作者Saikrishna Suresh
相关产品推荐
相关产品推荐

