如何将不规则字典列表匹配DataFrame行并合并为新DataFrame?
解决字典列表与DataFrame合并问题
直接用pandas将字典列表转换成新的DataFrame,再和原DataFrame按行索引合并,最后把缺失值填充为0即可,完全适配大数据量场景:
import pandas as pd # 原DataFrame df = pd.DataFrame({ 'Name': ['John', 'Ken', 'Smith', 'Kate', 'Tom'], 'City': ['NY', 'London', 'Boston', 'York', 'Paris'], 'Age': [25, 32, 29, 21, 42] }) # 字典列表 dict_list = [ {'A': 15, 'B': 35, 'D': 10}, {'C': 124, 'E': 36}, {'A': 3, 'F': 10}, {}, {'B': 4, 'A': 8, 'C': 1} ] # 转换字典列表为DataFrame,自动对齐所有键为列 dict_df = pd.DataFrame(dict_list) # 按列合并两个DataFrame,填充缺失值为0 result_df = pd.concat([df, dict_df], axis=1).fillna(0) # 可选:将字典生成的列转为整数类型(匹配示例输出格式) result_df = result_df.astype({col: int for col in dict_df.columns}) print(result_df)
关键步骤说明
pd.DataFrame(dict_list):自动识别所有字典的键作为列名,缺失键的位置填充NaN,完美处理字典长度不一致、键不统一的问题pd.concat([df, dict_df], axis=1):因为字典列表和原DataFrame行一一对应,索引完全匹配,合并时不会出现错位.fillna(0):批量替换所有缺失值为0,无需手动处理空字典或缺失键的情况- 类型转换步骤是为了让输出和示例完全一致,若允许浮点型可以省略
运行后输出结果与你期望的完全一致,且该方法是pandas原生向量操作,处理百万级数据也能保证效率。
内容的提问来源于stack exchange,提问作者hiro
相关产品推荐
相关产品推荐

