Spark如何将嵌套对象列表展开为扁平DataFrame?
解决方案
假设你的原始DataFrame名为df,列名为Column,可以通过以下两步完成转换:
- 将列表拆分为多行:使用
explode()方法把每个单元格里的字典列表拆成单独的行,每行对应一个字典。 - 将字典展开为列:把每行的字典转换成对应的
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
相关产品推荐
相关产品推荐

