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

如何将CSV列中字符串格式的字典列表转换为新DataFrame?

解决方案

核心问题分析

你遇到的问题本质是字符串格式的字典列表无法被json_normalize直接识别——因为json_normalize需要的是Python原生的列表/字典对象,而不是字符串。所以第一步必须把字符串转换成可操作的Python数据结构。

具体步骤及代码

1. 导入依赖库

import pandas as pd
import ast

注:ast.literal_eval比json.loads更适合处理CSV里可能存在的单引号格式字符串,兼容性更强。

2. 读取CSV并转换字符串列

假设你的目标列名为dict_list_str(替换成你实际的列名):

# 读取原始数据
df = pd.read_csv("你的数据集.csv")

# 将字符串转成Python列表/字典对象
df["dict_list"] = df["dict_list_str"].apply(ast.literal_eval)

3. 转换为新DataFrame

分两种场景处理:

  • 场景1:只需要展开字典列表,不需要保留原表其他列
# 先将列表拆分成单行,再标准化字典结构
new_df = pd.json_normalize(df["dict_list"].explode())
  • 场景2:需要保留原表其他列,关联展开后的字典数据
# 拆分列表为单行,保留原表所有列
exploded_df = df.explode("dict_list")
# 标准化字典列
normalized_df = pd.json_normalize(exploded_df["dict_list"])
# 合并原表列和标准化后的字典列
final_df = exploded_df.drop("dict_list", axis=1).join(normalized_df)

4. 处理格式不规范的字符串

如果CSV里的字符串存在语法错误(比如括号不匹配、引号缺失),ast.literal_eval会报错,可以用容错函数处理:

def safe_convert(s):
    try:
        return ast.literal_eval(s)
    except:
        # 错误时返回空列表,也可以根据需求返回NaN
        return []

df["dict_list"] = df["dict_list_str"].apply(safe_convert)

内容的提问来源于stack exchange,提问作者Didit Aditya Ezza Adzani

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.16 12:33:15