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

如何拆分DataFrame的键值对字符串列并以键作为列名?

解决方案:将JSON格式字符串列转换为结构化DataFrame

你的列内容是标准JSON格式字符串,手动用逗号拆分的方式不仅麻烦,还容易在复杂场景下出错(比如值中包含逗号/冒号的情况),推荐用以下两种可靠方法实现需求:

方法1:使用pd.json_normalize(推荐)

这是Pandas专门处理JSON格式数据的工具,直接解析字符串并展开为结构化表格:

import pandas as pd
import json

# 假设你的原始DataFrame名为data,目标列是'demographic'
# 先将每个JSON字符串转为Python字典
data['demographic'] = data['demographic'].apply(json.loads)
# 展开为结构化DataFrame
result = pd.json_normalize(data['demographic'])

如果数据来源可信,也可以用eval简化(但注意不可信数据别用,有安全风险):

result = pd.json_normalize(data['demographic'].apply(eval))

执行后result就是你需要的结构化表格:

IDNameAge
AP001Anderson23
AP002Jasmine36
AP003Zack28
AP004Chole39

方法2:基于字符串拆分的手动解析(不推荐,仅作参考)

如果一定要延续你之前的拆分思路,可以手动处理每一行的字符串,但要注意清理引号和大括号:

import pandas as pd

def parse_demographic(row):
    # 去掉首尾的大括号
    clean_row = row.strip('{}')
    # 按逗号拆分键值对
    kv_pairs = clean_row.split(',')
    # 遍历拆分键和值,清理引号
    parsed_dict = {}
    for pair in kv_pairs:
        key, value = pair.split(':')
        parsed_dict[key.strip('"')] = value.strip('"')
    return pd.Series(parsed_dict)

result = data['demographic'].apply(parse_demographic)

⚠️ 注意:这个方法仅适用于示例中的简单场景,如果值中包含逗号、冒号或引号,会直接解析失败,因此优先用方法1。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.01 19:10:29