Pandas DataFrame重构:拆分列表值为多行报错求助
解决Pandas DataFrame无逗号分隔列表拆分行的问题
问题原因
你的VALUES列格式并非合法的Python列表——元素之间缺少逗号,是连续的单引号(比如['AC_100''AC_101']),导致literal_eval无法解析,触发ValueError。
解决方案
先将VALUES列的字符串转换为合法的列表格式,再执行explode拆分。具体步骤:
- 移除字符串首尾的方括号
[] - 将连续的单引号
''替换为',',给元素添加逗号分隔 - 重新包裹方括号,让字符串成为合法的Python列表格式
- 用
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
相关产品推荐
相关产品推荐

