如何在Python/PySpark中移除JSON字典的指定外层节点?
Python 实现方案
原始字典的顶层仅包含"ses_group"键,直接通过键访问即可提取目标内容。如果需要避免键不存在时的KeyError,可以用get()方法做安全处理:
# 原始字典 original_dict = { "ses_group": { "grp_a": "ratncib", "grp_b": "batric", "grp_c": { "grp_ca": "x", "grp_cb": "y" }, "grp_d": {} } } # 直接提取 result_dict = original_dict["ses_group"] # 安全写法(键不存在时返回空字典) # result_dict = original_dict.get("ses_group", {}) print(result_dict)
运行后输出的结果就是你期望的字典结构。
PySpark 实现方案
如果数据以嵌套字典形式存储在PySpark DataFrame的列中,可通过以下方式提取:
首先构造示例DataFrame:
from pyspark.sql import SparkSession from pyspark.sql.functions import col spark = SparkSession.builder.appName("ExtractNestedDict").getOrCreate() # 模拟数据 data = [({"ses_group": {"grp_a": "ratncib", "grp_b": "batric", "grp_c": {"grp_ca": "x", "grp_cb": "y"}, "grp_d": {}}},)] df = spark.createDataFrame(data, ["nested_data"])
方法1:直接访问嵌套字段
通过.操作符直接提取ses_group对应的值:
# 提取并生成新列 result_df = df.select(col("nested_data.ses_group").alias("extracted_data")) # 将结果转为Python字典(如果需要) result_dict = result_df.collect()[0]["extracted_data"] print(result_dict)
方法2:使用getItem()方法
也可以用getItem()方法指定键来提取:
result_df = df.select(col("nested_data").getItem("ses_group").alias("extracted_data"))
两种方法都能得到目标字典结构,后续可根据需求对DataFrame做进一步处理。
内容的提问来源于stack exchange,提问作者Sarath
相关产品推荐
相关产品推荐

