如何将嵌套字典列表转换为多级列名的Pandas DataFrame
嵌套字典转多级列名DataFrame实现方案
实现思路
把原始字典中每个外层键对应的内层列表单独转为普通DataFrame,为每个子DataFrame的列增加一级对应外层键的前缀,最后按列拼接所有子DataFrame即可,拼接过程会自动为长度不一致的列表补全缺失值为NaN。
完整代码
import pandas as pd # 示例原始数据 raw_data = {'a': [{'aa': '10', 'bb': '11'}, {'aa': '12', 'bb': '13'}], 'b': [{'aa': '14', 'bb': '15'}, {'aa': '16', 'bb': '17'}]} df_collection = [] for outer_key, inner_items in raw_data.items(): # 内层列表转DataFrame sub_df = pd.DataFrame(inner_items) # 构造多级列名 sub_df.columns = pd.MultiIndex.from_tuples([(outer_key, col) for col in sub_df.columns]) df_collection.append(sub_df) # 按列拼接,自动兼容不同长度的内层列表 final_df = pd.concat(df_collection, axis=1)
效果验证
打印final_df即可得到你预期的输出结果:
a b aa bb aa bb 0 10 11 14 15 1 12 13 16 17
常见扩展需求
- 缺失值自定义填充:拼接完成后调用
final_df = final_df.fillna(自定义值)即可替换默认的NaN填充值 - 内层字典键不统一的场景:代码会自动为每个外层键生成对应存在的二级列,不存在的列自动补NaN
内容的提问来源于stack exchange,提问作者ReverseEngineer
相关产品推荐
相关产品推荐

