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

在PySpark中从DataFrame提取键值并转换格式的实现方法

解决方案(以Pandas为例)

核心思路

不需要提前创建Schema,直接通过数据重塑+JSON解析就能完成转换,步骤清晰直接:

  • 将原宽表转为长表,提取原列名作为ID列
  • 解析每个单元格的JSON字符串,提取todo数组
  • 将数组转为逗号分隔的字符串

代码示例

假设已读取的原DataFrame名为df,代码如下:

import pandas as pd
import json

# 1. 把宽表转成长表:原列名作为ID,单元格内容作为待解析的JSON字符串
melted_df = df.melt(var_name='ID', value_name='json_content')

# 2. 解析JSON字符串,提取todo数组并转为逗号分隔的字符串
melted_df['todo'] = melted_df['json_content'].apply(
    lambda x: ', '.join(json.loads(x)['todo'])
)

# 3. 保留目标列,得到最终结果
final_df = melted_df[['ID', 'todo']]

关于Schema的问题

  • Pandas场景:完全不需要提前定义Schema,json.loads会自动解析JSON结构,后续数据转换也无需预定义列结构。
  • Spark场景:如果是从JSON文件读取时就想结构化解析,可定义Schema直接读取嵌套结构;但针对已读取完成的DataFrame,同样可以用from_json函数配合Schema解析单元格JSON,不过非必要。

示例效果

假设原DataFrame为:

12
{"todo": ["买菜", "做饭"]}{"todo": ["洗碗", "拖地"]}

转换后的final_df为:

IDtodo
1买菜, 做饭
2洗碗, 拖地

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.16 07:50:25