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

Python:提取字典列数据并转常规列(剔除末尾特殊字典)

问题解决:提取字典列表中常规字典并转换为表格列

问题背景

现有表格包含dict_vals列,该列存储的字典包含key_a键,对应值为一个字典列表:

  • 列表内除最后一个字典外,其余字典的键统一(如a、b、c)
  • 末尾字典为特殊字典,键为a_t、b_t这类特殊命名
    需要剔除末尾特殊字典,将剩余字典转换为常规表格列。

解决方案代码

import pandas as pd
import json

# 1. 解析dict_vals列的JSON数据
table['dict_vals'] = table['dict_vals'].str.replace("'", '"').apply(json.loads)

# 2. 提取key_a中除最后一个特殊字典外的所有常规字典
table['regular_dicts'] = table['dict_vals'].apply(lambda x: x['key_a'][:-1])

# 3. 将字典列表展开为常规列
# 先把列表拆成单行,再把字典转成列
expanded_df = table.explode('regular_dicts').reset_index(drop=True)
final_df = pd.concat([expanded_df.drop('regular_dicts', axis=1), 
                      expanded_df['regular_dicts'].apply(pd.Series)], axis=1)

# 4. (可选)单独提取末尾特殊字典的逻辑
table['special_dict'] = table['dict_vals'].apply(lambda x: x['key_a'][-1])
special_df = pd.concat([table.drop('special_dict', axis=1), 
                        table['special_dict'].apply(pd.Series)], axis=1)

代码说明

  • 修正原代码逻辑:直接在原表格上处理JSON解析,避免额外的列表转DataFrame操作,更高效
  • x['key_a'][:-1]精准剔除列表最后一个特殊字典,保留所有常规字典项
  • explode方法将字典列表拆分为单独行,apply(pd.Series)把字典的键直接转换为表格列
  • 通过pd.concat合并原表格的其他字段与转换后的常规列,保留完整数据链路

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.14 07:05:34