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

如何在Pandas中将CSV读取的字符串列转换为数值列表?

这个问题我之前也碰到过!核心原因是你从CSV读进来的LABELS列是字符串类型,虽然看起来像元组,但本质就是一串文本,所以直接用list(x)会把字符串拆成单个字符,完全不是你想要的数值列表。

给你两个实用的解决方法,按需选择:

方法1:用ast.literal_eval解析(推荐,安全通用)

Python的ast模块里的literal_eval可以安全地把字符串形式的Python字面量(比如元组、列表、字典)转换成真正的Python对象,比直接用eval安全得多(不会执行恶意代码)。

代码示例:

import ast
import pandas as pd

# 假设你的DataFrame是df
df['LABELS'] = df['LABELS'].apply(lambda x: list(ast.literal_eval(x)))

原理很简单:ast.literal_eval(x)先把类似"(1.0,2.0,...)"的字符串转换成真正的元组,再用list()转成数值列表,完美得到你要的结果。

方法2:纯字符串处理(轻量,适合格式固定的场景)

如果你的LABELS字符串格式非常规范(比如首尾一定是(),里面都是用逗号分隔的数字),也可以直接用字符串操作来解析,不用额外导入模块:

df['LABELS'] = df['LABELS'].apply(lambda x: [float(num.strip()) for num in x.strip('()').split(',')])

拆解一下步骤:

  1. x.strip('()'):去掉字符串首尾的括号,得到类似"1.0,2.0,2.0,..."的文本
  2. .split(','):按逗号分割成单个数字字符串的列表,比如["1.0", "2.0", ...]
  3. 遍历每个元素,用num.strip()去掉可能的空格,再转成float,最后组成列表

额外提示:处理脏数据

如果你的CSV里可能存在格式错误的行(比如某个LABELS不是标准的元组格式),可以加个异常处理,避免整个代码崩溃:

import ast

def safe_convert(s):
    try:
        return list(ast.literal_eval(s))
    except (SyntaxError, ValueError):
        return []  # 或者返回pd.NA,根据你的需求处理空值

df['LABELS'] = df['LABELS'].apply(safe_convert)

这样就能轻松把字符串形式的"元组"转换成数值列表啦!

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.27 07:01:21