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

如何读取CSV中存储的列表型数据为pandas DataFrame并保留原有数据类型

问题本质

CSV为纯文本格式,无法直接存储Python列表类型,你导出的文件中所有列表都被序列化为字符串格式,读取时需要手动做类型解析才能还原原有列表结构。

可行解决方案

方案1:读取阶段通过converters参数完成转换

该方案在读取CSV的同时完成所有列的类型转换,无需后续二次处理:

import pandas as pd
import ast

# 若提前已知列名/列数量,可以直接构造converters字典
# 不确定列信息的话可以先读取表头获取所有列名:
df_header = pd.read_csv("list_entries.csv", nrows=0)
converters = {col: ast.literal_eval for col in df_header.columns}

# 读取时指定converters,加index_col=0是为了还原你原DataFrame的行索引
df = pd.read_csv("list_entries.csv", converters=converters, index_col=0)

方案2:读取完成后批量转换

你之前用applymap的逻辑是正确的,遇到的NameError: name 'ast' is not defined报错是因为部分IDE调试器执行lambda时,上下文没有继承主代码中导入的ast模块,调整写法把ast导入放到lambda内部即可解决:

import pandas as pd

# 先读取CSV
df = pd.read_csv("list_entries.csv", index_col=0)
# 批量转换所有列的字符串为列表
df = df.applymap(lambda x: __import__('ast').literal_eval(x))

结果验证

执行以下代码可以确认转换是否符合预期:

# 验证元素类型为列表
print(type(df.iloc[0, 0]))
# 输出应为 <class 'list'>

# 验证值正确
print(df.iloc[0, 0])
# 输出应为 [1, 0]

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.29 00:45:07