如何从嵌套字典列表生成指定格式的Pandas DataFrame?
解决嵌套字典列表转指定结构DataFrame的问题
方法1:用pd.json_normalize()直接展开嵌套字段
这是处理嵌套字典最省心的方式,Pandas内置的json_normalize专门用来解析这类嵌套结构:
import pandas as pd # 示例嵌套字典列表(替换成你的真实数据) dict_items = [ {"user_id": 101, "profile": {"name": "张三", "email": "zhangsan@example.com", "age": 28}}, {"user_id": 102, "profile": {"name": "李四", "email": "lisi@example.com", "age": 32}} ] # 一键展开嵌套字段 df = pd.json_normalize(dict_items) # 可选:去除列名里的嵌套前缀(比如把profile.name改成name) df.columns = df.columns.str.replace("profile.", "") print(df)
输出会是你期望的扁平化表格:
| user_id | name | age | |
|---|---|---|---|
| 101 | 张三 | zhangsan@example.com | 28 |
| 102 | 李四 | lisi@example.com | 32 |
方法2:手动遍历构造扁平化列表
如果需要更灵活的字段控制(比如跳过某些嵌套字段、修改字段值),可以手动循环处理:
import pandas as pd dict_items = [ {"user_id": 101, "profile": {"name": "张三", "email": "zhangsan@example.com", "age": 28}}, {"user_id": 102, "profile": {"name": "李四", "email": "lisi@example.com", "age": 32}} ] # 把每个嵌套字典拆成扁平结构 flat_data = [] for item in dict_items: # 合并外层字典和内层嵌套字典,同时移除原嵌套字段 flat_dict = {**item, **item.pop("profile")} flat_data.append(flat_dict) df = pd.DataFrame(flat_data) print(df)
为什么直接用pd.DataFrame()不行?
直接传入嵌套字典列表时,Pandas会把嵌套的字典当作单个列的取值,而不会自动解析展开。比如你会得到user_id和profile两列,profile列里存的是完整的字典对象,这和你要的扁平化列结构完全不符。
内容的提问来源于stack exchange,提问作者dustydee
相关产品推荐
相关产品推荐

