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

如何从pandas字符串列表格式列提取元素并获得去重结果

解决方案

方案1:基于你现有处理逻辑调整

你现有的处理得到的c2列是逗号分隔的字符串,只需要在转列表后将每个字符串按逗号拆分、展平,再去重即可:

import re
import pandas as pd

# 你原有代码逻辑
df = pd.DataFrame({"c1":["[\"text\",\"text2\"]","[\"bla\",\"bla\",\"bla\"]"]})
df["c2"] = df["c1"].apply(lambda x:re.sub('[\["\]]', "", x))

# 拆分展平所有元素
all_items = [item for s in df["c2"] for item in s.split(",")]
# 去重得到结果
unique_res = list(set(all_items))

注意:你原有代码中使用list作为变量名会覆盖Python内置的list类型,建议更换为其他自定义变量名避免后续报错。

如果需要保留元素首次出现的顺序,可以用下面的方式代替set去重:

unique_res = list(dict.fromkeys(all_items))

方案2:更稳妥的JSON解析方案(推荐)

你c1列的原始值本身就是合法的JSON数组字符串,无需用正则处理,直接解析JSON可以避免元素本身包含逗号、引号时的处理错误:

import json
import pandas as pd

df = pd.DataFrame({"c1":["[\"text\",\"text2\"]","[\"bla\",\"bla\",\"bla\"]"]})
# 直接解析为Python列表,无需正则替换
df["c2"] = df["c1"].apply(json.loads)
# 展平嵌套列表
all_items = [item for sublist in df["c2"] for item in sublist]
# 去重
unique_res = list(set(all_items))

如果遇到不标准的JSON格式,也可以改用ast.literal_eval完成解析:

import ast
df["c2"] = df["c1"].apply(ast.literal_eval)

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.23 18:06:04