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

Spark如何将嵌套对象列表展开为扁平DataFrame?

解决方案

假设你的原始DataFrame名为df,列名为Column,可以通过以下两步完成转换:

  1. 将列表拆分为多行:使用explode()方法把每个单元格里的字典列表拆成单独的行,每行对应一个字典。
  2. 将字典展开为列:把每行的字典转换成对应的a、b列,可通过apply(pd.Series)或pd.json_normalize()实现。

代码示例

import pandas as pd

# 构造示例数据
data = {'Column': [
    [{'a': 2, 'b': 4}, {'a': 2, 'b': 3}],
    [{'a': 12, 'b': 14}, {'a': 25, 'b': 33}, {'a': 22, 'b': 31}]
]}
df = pd.DataFrame(data)

# 第一步:拆分列表为多行
df_exploded = df.explode('Column').reset_index(drop=True)

# 第二步:展开字典为列
result_df = df_exploded['Column'].apply(pd.Series)

print(result_df)

输出结果

a   b
0   2   4
1   2   3
2  12  14
3  25  33
4  22  31

大数据集优化方案

如果处理的数据集规模较大,pd.json_normalize()的执行效率更高:

# 合并所有字典为一个大列表
all_dicts = [item for sublist in df['Column'] for item in sublist]
result_df = pd.json_normalize(all_dicts)

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.06 20:36:00