如何从嵌套字典创建单行且展开嵌套字段的Pandas DataFrame
解决方案
直接使用Pandas内置的pd.json_normalize()函数即可实现需求,该函数原生支持嵌套结构的扁平化处理,生成的列名默认遵循父字段名_子字段名的规则,完全匹配你要求的命名格式,且会直接输出单行DataFrame。
最简实现代码
import pandas as pd # 直接将你的嵌套字典传入函数即可 df = pd.json_normalize(my_dict)
执行后即可得到目标结果:原来的非嵌套字段(如id、stage_id、title)会原样保留,creator_user_id这类嵌套字典字段会自动展开为creator_user_id_id、creator_user_id_name等独立列。
备选方案(已生成初始DataFrame的情况)
如果你已经通过pd.DataFrame.from_dict生成了初始的竖表结构,可以用下面的方法二次处理得到目标结果:
# 先将竖表转置为单行横表 df_base = df.T.reset_index(drop=True) # 筛选出所有值为字典的嵌套列 dict_cols = [col for col in df_base.columns if isinstance(df_base[col].iloc[0], dict)] for col in dict_cols: # 展开字典为多列,统一添加父字段名前缀 expanded_cols = df_base[col].apply(pd.Series).add_prefix(f"{col}_") # 合并展开后的列到原表,删除原嵌套列 df_base = pd.concat([df_base.drop(columns=[col]), expanded_cols], axis=1) df = df_base
优先推荐使用第一种方案,代码更简洁、执行效率更高,适配绝大多数嵌套字典转单行DataFrame的场景。
内容的提问来源于stack exchange,提问作者David López
相关产品推荐
相关产品推荐

