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

Spark 2.4.7中如何从含可变主键的嵌套JSON提取key2值并保留行序

提取DataFrame嵌套JSON中所有key2值并保留原行信息

处理思路

  • 将JSON格式的列解析为Python字典
  • 提取字典中所有可变主键对应的子对象,转为列表形式(兼容空JSON场景)
  • 把列表列"炸开",让每个子对象单独成为一行,同时保留原行的其他信息
  • 从每个子对象中提取key2的值

代码实现

假设你的DataFrame名为df,存储嵌套JSON的列名为nested_json,其他行标识列(如id)需保留:

import pandas as pd
import json

# 1. 将JSON字符串解析为字典
df['json_dict'] = df['nested_json'].apply(json.loads)

# 2. 提取所有子对象为列表,空JSON则生成含空字典的列表以保留原行
df['sub_items'] = df['json_dict'].apply(lambda x: list(x.values()) if x else [{}])

# 3. 炸开列表,每个子对象单独占一行
exploded_df = df.explode('sub_items')

# 4. 提取key2值,保留原行信息并清理中间列
result_df = exploded_df.assign(
    key2=exploded_df['sub_items'].apply(lambda x: x.get('key2', None))
).drop(columns=['nested_json', 'json_dict', 'sub_items'])

# 查看最终结果
print(result_df)

示例演示

原DataFrame

idnested_json
1{"primary key1":{"key1":"value1","key2":"value2","key3":"value3"}, "primary key2":{"key1":"value4","key2":"value5","key3":"value6"}}
2{}
3{"primary key3":{"key1":"value7","key2":"value8","key3":"value9"}}

处理后结果

idkey2
1value2
1value5
2None
3value8

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.06 09:15:33