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

Pandas如何将DataFrame Workbooks列JSON值转字符串并拆分多字段

问题说明

Pandas DataFrame中Workbooks列存储了列表包裹的字典结构值,示例数据如下:

Workbooks
0  [{'name': 'Dashboard_5MRecords'}]
1  [{'name': 'Dashboard_5MRecords_PerformanceFIS'}]
2  [{'name': 'Dashboard_5MRecords.twbx'}]

两类处理需求的对应解决方案如下:

需求1:提取name字段转为纯字符串

目标是将列表字典中的name值提取为纯字符串替换原列内容,直接使用apply按索引取值即可:

df['Workbooks'] = df['Workbooks'].apply(lambda item: item[0]['name'])

处理后原Workbooks列的值会直接变为Dashboard_5MRecords、Dashboard_5MRecords_PerformanceFIS这类纯字符串格式。

需求2:拆分字典多字段为独立列

如果列表内的字典包含id等额外字段,例值为[{'name': 'Dashboard_5MRecords','id': '5478994'}],需要将不同键拆分为独立列,可以选择以下两种实现方式:

  • 方式1:使用apply展开后拼接
    适合简单结构,写法简洁:
    # 提取列表内字典,展开为多列
    expand_columns = df['Workbooks'].apply(lambda item: item[0]).apply(pd.Series)
    # 将展开的列拼接到原DataFrame
    df = pd.concat([df, expand_columns], axis=1)
    # 不需要原Workbooks列可执行删除
    # df.drop(columns='Workbooks', inplace=True)
    
  • 方式2:使用json_normalize结构化解析
    适合字段多、存在嵌套的复杂结构,兼容性更好:
    import pandas as pd
    # 提取列表首元素后做标准化解析
    expand_df = pd.json_normalize(df['Workbooks'].str[0])
    # 拼接回原表
    df = pd.concat([df, expand_df], axis=1)
    

注意:上述方案默认Workbooks列所有行均为长度为1的列表,且列表内字典包含待提取的键。如果存在空值、结构异常的行,需要提前增加异常捕获逻辑,避免触发KeyError或索引错误。


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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.26 18:27:34