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

如何在Pandas中拆分嵌套列表?现有拆分方案出现异常求解决

问题原因
  • 你用str.split(', ')做拆分时,会把所有逗号加空格的位置都当作拆分点。但目标里的第二个内容Black Beans, Rice, Cheese, Sour Cream本身就包含逗号加空格,导致这个内部的分隔符也被触发,原本该整体存入choice2的内容被拆成了多个片段,所以choice2只拿到Black Beans,剩下的内容跑到了choice3。
  • 第一步的正则表达式r'\[([^[\]]*)\]'仅提取了最外层方括号里第一个不含方括号的部分,也就是Tomatillo-Red Chili Salsa (Hot),并没有正确捕获到嵌套的列表内容。
解决办法

这里提供两种可行的方案,根据你的数据格式灵活选择:

方案1:正则直接提取(适配固定一层嵌套格式)

如果你的choice_description都是[A, [B,C,D]]这种固定的一层嵌套结构,可以用正则直接匹配出两个目标内容:

import pandas as pd

# 匹配外层列表的两个元素:第一个是逗号前的内容,第二个是嵌套方括号里的所有内容
pattern = r'\[(.*?), \[(.*?)\]\]'
# 提取匹配结果
extracted = Dataset['choice_description'].str.extract(pattern, expand=True)

# 赋值到新列
Dataset['choice1'] = extracted[0]
Dataset['choice2'] = extracted[1]

方案2:解析为真实列表再处理(适配灵活格式)

如果choice_description的字符串是合法的Python列表格式,用ast.literal_eval把字符串转成真实列表,再提取元素更稳妥:

import pandas as pd
import ast

def parse_choice(choice_str):
    try:
        # 把字符串转成Python列表
        choice_list = ast.literal_eval(choice_str)
        # 第一个元素直接取
        choice1 = choice_list[0]
        # 第二个元素是列表,用逗号空格拼接成字符串
        choice2 = ', '.join(choice_list[1])
        return pd.Series([choice1, choice2])
    except:
        # 格式不合法时返回空值
        return pd.Series([None, None])

# 应用函数生成新列
Dataset[['choice1', 'choice2']] = Dataset['choice_description'].apply(parse_choice)

方案对比

  • 正则方案:速度快,但只适配固定的一层嵌套格式,数据格式有变动(比如多层嵌套、元素数量变化)就会失效。
  • 列表解析方案:更灵活,能处理所有合法的Python列表格式,但如果字符串格式不规范(比如括号不匹配、缺少引号)会报错,需要异常处理兜底。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.01 05:40:19