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

Pandas DataFrame重构:拆分列表值为多行报错求助

解决Pandas DataFrame无逗号分隔列表拆分行的问题

问题原因

你的VALUES列格式并非合法的Python列表——元素之间缺少逗号,是连续的单引号(比如['AC_100''AC_101']),导致literal_eval无法解析,触发ValueError。

解决方案

先将VALUES列的字符串转换为合法的列表格式,再执行explode拆分。具体步骤:

  1. 移除字符串首尾的方括号[]
  2. 将连续的单引号''替换为',',给元素添加逗号分隔
  3. 重新包裹方括号,让字符串成为合法的Python列表格式
  4. 用literal_eval解析为列表,最后explode拆分行

修改后的代码

from ast import literal_eval
import pandas as pd

# 假设你的newdf已经创建完成
out = newdf.assign(
    VALUES=newdf["VALUES"]
           .str.strip('[]')  # 去掉首尾的[]
           .str.replace("''", "','", regex=False)  # 替换连续单引号为','
           .apply(lambda x: f"[{x}]")  # 重新包裹成列表格式
           .apply(literal_eval)  # 解析为Python列表
).explode("VALUES")

print(out)

简化替代方案(无需literal_eval)

如果不想用literal_eval,可以直接拆分字符串得到列表:

out = newdf.assign(
    VALUES=newdf["VALUES"]
           .str.strip('[]')
           .str.split("''")  # 按连续单引号拆分元素
).explode("VALUES")

print(out)

说明

  • 两种方案都能处理你提供的DataFrame格式,拆分后每个元素单独成一行
  • 使用regex=False可避免正则表达式的额外开销,因为我们是替换固定字符串''

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.25 08:07:22