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

如何用Python合并Pandas字符串列并去重得到水果列表?

如何从Pandas DataFrame的逗号分隔水果列提取唯一列表?

先还原原始的DataFrame方便测试:

import pandas as pd

df = pd.DataFrame({
    'id': ['01', '02', '03'],
    'fruits': ['Apple, Apricot', 'Apple, Banana, Clementine, Pear', 'Orange, Pineapple, Pear']
})

要得到你要的['Apple','Apricot','Banana','Clementine','Orange','Pear','Pineapple']这个去重后的有序列表,这里有两种实用的方法:

方法一:拆分→爆炸→去重(直观易理解)

这是新手最容易上手的步骤,每一步都清晰可控:

  • 第一步:把fruits列的字符串按, 拆分,变成每个元素是水果列表的列
  • 第二步:用explode()把列表拆成单独的行,每个水果占一行
  • 第三步:用drop_duplicates()去重(它会保留水果第一次出现的顺序),最后转成列表

代码实现:

# 拆分字符串为列表
df['fruit_list'] = df['fruits'].str.split(', ')
# 将列表拆分为多行
exploded = df.explode('fruit_list')
# 去重并转为目标列表
unique_fruits = exploded['fruit_list'].drop_duplicates().tolist()
print(unique_fruits)

运行后就能得到你要的结果,中间过程还方便调试查看。

方法二:生成器+有序去重(更简洁高效)

如果不想生成中间列或DataFrame,用生成器一次性收集所有水果,再利用dict.fromkeys()的特性实现去重且保留首次出现顺序,代码更紧凑:

# 用生成器遍历所有拆分后的水果
all_fruits = (fruit for row in df['fruits'] for fruit in row.split(', '))
# 利用dict.fromkeys的特性去重并保留顺序
unique_fruits = list(dict.fromkeys(all_fruits))
print(unique_fruits)

这个方法不需要额外内存存储中间数据,处理大DataFrame时更高效。要是你不在乎顺序,直接转成集合再转列表也行:list(set(all_fruits)),但顺序会被打乱,所以更推荐上面两种保序的方法。


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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.29 07:48:54