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

如何将CSV单元格中的字符串格式列表转换为可操作的嵌套列表

Pandas读取CSV列表列为原生列表的实现方法

pandas默认读取CSV文件时,不会自动识别字符串形式的嵌套列表结构,因此该列会被解析为普通字符串,才会出现取首字符为[、调用dtype报错的情况。可以通过以下两种方法完成转换:

方法1:读取后批量转换

使用Python标准库ast的literal_eval方法进行安全的字面量解析,不会执行恶意代码,安全性远高于直接使用eval:

import pandas as pd
import ast

# 读取CSV文件
df = pd.read_csv('example.csv', usecols=['anomaly_sequences'])
# 转换列格式,空值先填充为空白列表字符串避免报错
df['anomaly_sequences'] = df['anomaly_sequences'].fillna('[]').apply(ast.literal_eval)

# 验证转换结果
a = df.iloc[0]['anomaly_sequences']
print(a[0]) # 输出第一个子列表:[1009, 1310]
print(type(a)) # 输出:<class 'list'>

方法2:读取时直接转换

通过pd.read_csv的converters参数在读取阶段就完成格式转换,一步到位效率更高:

import pandas as pd
import ast

df = pd.read_csv(
    'example.csv',
    usecols=['anomaly_sequences'],
    converters={'anomaly_sequences': lambda x: ast.literal_eval(x) if x.strip() else []}
)

如果你的CSV中该列不存在空值,lambda可以简化为直接传ast.literal_eval即可。

注意事项

  • 不要直接使用内置函数eval进行转换,若CSV文件来源不可信,eval会执行其中的恶意代码,存在安全风险。
  • 若转换时报错,可先打印某一行的原始字符串内容,检查是否存在语法错误(比如括号不匹配、多余逗号等)。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.30 02:39:02