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

如何让Pandas读取CSV中的列表列时保持列表类型而非字符串

Pandas读取CSV时将列表格式字符串转回列表类型

CSV文件本身不支持存储列表类型,写入时列表会被自动转为字符串,读取时可以通过以下几种方法转回列表:

方法1:用ast.literal_eval解析字符串(简单高效)

ast.literal_eval可以安全解析字符串形式的Python数据结构,直接把列表格式的字符串转回列表:

import pandas as pd
import ast

# 读取时直接指定列转换器
df = pd.read_csv('file.csv', converters={'1': ast.literal_eval})
print(df['1'].values[0])  # 输出:['A', 'B', 'C']

# 或者读取后批量转换
df = pd.read_csv('file.csv')
df['1'] = df['1'].apply(ast.literal_eval)
print(df['1'].values[0])

方法2:自定义函数手动处理字符串

如果担心特殊字符导致ast.literal_eval报错,可以手动处理字符串格式:

import pandas as pd

def str_to_list(s):
    # 去掉首尾的引号和方括号
    s_clean = s.strip('"[]')
    # 按逗号分割,再清理每个元素的引号和空格
    return [item.strip("' ") for item in s_clean.split(',') if item.strip()]

df = pd.read_csv('file.csv')
df['1'] = df['1'].apply(str_to_list)
print(df['1'].values[0])  # 输出:['A', 'B', 'C']

方法3:写入时提前序列化(从根源避免问题)

写入CSV前把列表转成JSON字符串,读取时再解析,能更好兼容复杂列表结构:

import pandas as pd
import json

d = [['d',['A','B','C']],['p',['F','G']]]
df = pd.DataFrame(d)

# 写入时将列表列转为JSON格式字符串
df['1'] = df['1'].apply(json.dumps)
df.to_csv('file.csv', index=False)

# 读取时解析JSON字符串
df_read = pd.read_csv('file.csv')
df_read['1'] = df_read['1'].apply(json.loads)
print(df_read['1'].values[0])  # 输出:['A', 'B', 'C']

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.20 09:33:31