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

如何保存含列表的DataFrame数据集并还原原始数据

解决DataFrame列表列存CSV后读取还原问题

CSV格式本身不支持列表类型,直接存储会自动将列表转为字符串,你之前用的strip+split方法太简陋,没法处理复杂情况(比如元素带引号、数值类型丢失)。下面是两种可靠的解决方法:

方法一:保存前序列化列表(推荐)

用JSON格式把列表转成标准字符串,读取时再反序列化,能完整保留原始结构和类型:

保存代码

import pandas as pd
import json

# 假设目标列为C2_ACP,将列表转为JSON字符串
df['C2_ACP'] = df['C2_ACP'].apply(json.dumps)
df.to_csv('data.csv', index=False)

读取代码

import pandas as pd
import json

def parse_json_list(x):
    try:
        return json.loads(x)
    except:
        return x  # 兼容非列表列的情况

df = pd.read_csv('data.csv', converters={'C2_ACP': parse_json_list})

方法二:改进读取时的转换函数(适配未提前序列化的CSV)

如果已经用原始方式保存了CSV,可以用更健壮的转换函数处理,修复元素类型和空值问题:

import pandas as pd

def restore_list(x):
    # 处理空列表的情况
    if x.strip() == '[]':
        return []
    # 清理并分割元素
    raw_elements = [elem.strip().strip("'\"") for elem in x.strip('[]').split(',')]
    # 尝试转换为数值类型,失败则保留字符串
    restored = []
    for elem in raw_elements:
        if not elem:
            continue
        try:
            # 区分整数和浮点数
            restored.append(int(elem) if '.' not in elem else float(elem))
        except ValueError:
            restored.append(elem)
    return restored

df = pd.read_csv('data.csv', converters={'C2_ACP': restore_list})

注意:方法二有局限性,如果列表元素本身包含逗号或引号,会出现分割错误,所以优先用方法一。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.15 06:05:28