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

如何将pandas DataFrame列的类列表字符串转为逗号分隔字符串

Pandas字符串列清洗解决方案

你需要处理的是DataFrame中存储为字符串格式的类列表值,移除外层包裹的方括号和多余引号,保留内部元素组成逗号分隔字符串,以下是可直接运行的实现方案:

推荐方案:向量化字符串操作(无安全风险,性能最优)

eval 存在执行任意恶意代码的风险,不需要解析真实列表结构的场景下,直接用pandas内置的字符串处理方法即可完成需求:

# 先移除Column1每个值首尾的外层单引号,再移除首尾的方括号
df['Column1'] = df['Column1'].str.strip("'").str.strip("[]")

处理后Column1的输出和预期完全一致:

0    'jjhjh', 'adads','adsd'
1             'adads','adsd'
2    'jjhjh', 'adads','adsd'
3             'adads','adsd'
4             'adads','adsd'
Name: Column1, dtype: object

兼容方案:解析后拼接(适配格式不规整的原始数据)

如果原始字符串存在多余空格、格式不统一的情况,可以先用安全的字面量解析方法转成真实列表,再拼接为目标字符串:

import ast
# 先剥离外层单引号,解析为Python列表,再用逗号拼接所有元素
df['Column1'] = df['Column1'].str.strip("'").apply(
    lambda x: ', '.join(ast.literal_eval(x))
)

原自定义函数的问题说明

  • 第一个循环将处理后的值存入lista后,第二个循环未做逐行对应赋值,每次迭代都会直接覆盖column_name变量,最终只会保留最后一个元素的处理结果
  • 类型判断逻辑错误:判断对象是否为元组需要使用isinstance(m, tuple),直接写m == tuple是将对象与tuple类本身做相等比较,永远返回False
  • 最终返回df['other'],和处理Column1列的需求完全不匹配

内容的提问来源于stack exchange,提问作者Natália Resende

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.30 06:57:18