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

如何将Pandas DataFrame中等号分隔的字典列表解析为单独字段

解析Pandas DataFrame中特殊格式列的方法

你的数据格式类似JSON但用等号替代冒号,无法直接用json.load()或yaml.load()解析,下面是针对这种格式的分步解决方案:

1. 编写解析函数

先定义一个函数,把单元格内的特殊格式字符串转换成标准字典列表:

import re
import json
import pandas as pd

def parse_special_format(s):
    # 移除首尾的中括号
    cleaned_str = s.strip('[]')
    # 分割每个独立的对象
    item_list = cleaned_str.split('}, {')
    
    parsed_objects = []
    for item in item_list:
        # 补全对象的首尾大括号
        formatted_item = '{' + item.strip('{}') + '}'
        # 将布尔值的等号替换为冒号(保持小写,符合JSON规范)
        formatted_item = re.sub(r'(\w+)=true', r'\1:true', formatted_item)
        formatted_item = re.sub(r'(\w+)=false', r'\1:false', formatted_item)
        # 将字符串类型的键值对替换为带引号的JSON格式
        formatted_item = re.sub(r'(\w+)=([\w\/\s]+)', r'\1:"\2"', formatted_item)
        
        # 解析为字典并加入结果列表
        try:
            parsed_obj = json.loads(formatted_item)
            parsed_objects.append(parsed_obj)
        except Exception as e:
            print(f"解析失败: {e}")
            parsed_objects.append(None)
    
    return parsed_objects

2. 应用函数并展开记录

假设你的DataFrame名为df,目标列名为target_column,执行以下步骤:

# 对目标列应用解析函数,得到字典列表
df['parsed_data'] = df['target_column'].apply(parse_special_format)

# 将字典列表展开为单独行
df_exploded = df.explode('parsed_data').reset_index(drop=True)

# 将字典拆分为单独的列
df_final = pd.concat([
    df_exploded.drop('parsed_data', axis=1),
    df_exploded['parsed_data'].apply(pd.Series)
], axis=1)

执行后,df_final就是每个原始对象对应一行的DataFrame,包含self、disabled、id、value等独立列。

说明

  • 正则表达式会自动处理布尔值(true/false)和字符串值(包含字母、数字、空格、斜杠的内容)
  • 如果你的数据中有更复杂的值(比如包含逗号),可以调整正则表达式适配

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.08 22:47:14