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

从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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.02 10:35:42