如何使用PySpark将嵌套字典转换为多列DataFrame
嵌套字典DataFrame展开方法
假设你已经将JSON文件转换为包含data列的原始DataFrame(每一行data是嵌套字典结构),可以通过以下步骤将其转换为目标多列结构:
步骤1:预处理(若需)
如果data列的元素是字符串格式的字典(而非Python原生字典),先将其转换为字典:
import pandas as pd import ast # 假设原始DataFrame名为df df['data'] = df['data'].apply(ast.literal_eval)
步骤2:展开顶层字典
把data列中的顶层字典展开为单独列,得到包含GUID和terms的中间DataFrame:
df_expanded = pd.DataFrame(df['data'].tolist())
步骤3:扁平化嵌套的terms字典
对terms列的嵌套字典进行扁平化处理,同时为生成的列名添加terms_前缀:
# 使用json_normalize扁平化嵌套字典,下划线分隔层级 df_terms_flat = pd.json_normalize(df_expanded['terms'], sep='_').add_prefix('terms_')
步骤4:合并最终结果
将GUID列与扁平化后的terms数据合并,得到目标结构:
final_df = pd.concat([df_expanded['GUID'], df_terms_flat], axis=1)
执行完成后,final_df的结构就与你期望的一致,列名会按照terms_层级1_层级2的规则自动生成。
内容的提问来源于stack exchange,提问作者LOTR
相关产品推荐
相关产品推荐

