从JSON提取指定列并写入DataFrame的技术求助
解决方案
以下分两种常用场景给出具体实现:
场景1:Python Pandas环境
直接解析JSON字符串,提取目标字段后构造DataFrame:
import json import pandas as pd # 你的JSON原始字符串 json_content = '''{ "code": 4, "results": [ { "requests": 100, "requests_country": 291, "listing": { "first": 1, "second": 2 } }, { "requests": 200, "requests_country": 292, "listing": { "first": 10, "second": 220 } } ] }''' # 解析JSON为字典 parsed_data = json.loads(json_content) # 提取results数组 target_data = parsed_data["results"] # 创建只包含指定字段的DataFrame df = pd.DataFrame(target_data, columns=["requests", "requests_country"]) # 输出结果 print(df)
执行后输出:
requests requests_country 0 100 291 1 200 292
场景2:PySpark环境
如果是在Spark集群环境下,需要处理数组展开:
from pyspark.sql import SparkSession from pyspark.sql.functions import col # 初始化Spark会话 spark = SparkSession.builder.appName("JsonExtract").getOrCreate() # 你的JSON字符串 json_content = '''{ "code": 4, "results": [ { "requests": 100, "requests_country": 291, "listing": { "first": 1, "second": 2 } }, { "requests": 200, "requests_country": 292, "listing": { "first": 10, "second": 220 } } ] }''' # 将字符串转为RDD后读取为DataFrame raw_df = spark.read.json(spark.sparkContext.parallelize([json_content])) # 展开results数组,提取目标字段 final_df = raw_df.selectExpr("explode(results) as item") \ .select(col("item.requests"), col("item.requests_country")) # 显示结果 final_df.show()
执行后输出:
+--------+----------------+ |requests|requests_country| +--------+----------------+ | 100| 291| | 200| 292| +--------+----------------+
你之前可能出错的原因
- 若用Spark,未使用
explode函数展开嵌套的数组,直接提取会导致字段类型不匹配报错 - 若用Pandas,可能未正确定位到
results数组,或构造DataFrame时未指定目标列名
内容的提问来源于stack exchange,提问作者Haha
相关产品推荐
相关产品推荐

