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

如何将pandas DataFrame列中字符串格式字典转为Python字典?

解决方法

1. 将字符串格式的字典转换为Python字典

使用ast.literal_eval()安全解析字符串格式的字典——它比原生eval()更安全,专门用于解析Python字面量结构,同时处理列中的NaN值:

import pandas as pd
import ast

# 定义转换函数,处理空值和格式转换
def str_to_dict(s):
    if pd.isna(s):
        return None
    try:
        return ast.literal_eval(s)
    except (SyntaxError, ValueError):
        # 处理格式错误的异常数据,可根据需求返回None或原字符串
        return None

# 批量转换整列
df['fruit'] = df['fruit'].apply(str_to_dict)

2. 提取'orange'对应的'B'字段

转换完成后,通过自定义函数提取目标字段:

# 提取orange下第一个元素的B字段
def extract_orange_b(d):
    if not d:
        return None
    orange_list = d.get('orange')
    # 确保orange对应的值是列表且不为空
    if isinstance(orange_list, list) and len(orange_list) > 0:
        return orange_list[0].get('B')
    return None

# 生成新列存储结果
df['orange_B'] = df['fruit'].apply(extract_orange_b)

补充说明

  • 如果字符串字典存在语法问题(比如示例中的'end': b应为'end': 'b'),ast.literal_eval()会抛出异常,可在except块中添加修复逻辑(如补全缺失引号),或标记异常数据后续处理。
  • 4万行数据用pandas的apply处理完全可行,若追求极致效率,可改用vectorize或swifter库加速。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.18 20:20:19