如何将两个字典作为行合并为单个pandas DataFrame
实现方案
直接将每个字典作为行数据传入pandas.DataFrame构造器即可,核心是把多个字典包裹在列表中传入,同时补充你需要的set标识列。
最简写法
针对你给出的示例,代码如下:
import pandas as pd foo = {'mean': 0.11, 'median': 0.09, 'p90': 0.24} bar = {'mean': 0.10, 'median': 0.09, 'p90': 0.20} df = pd.DataFrame([ {"set": "foo", **foo}, {"set": "bar", **bar} ])
输出结果完全匹配你的预期:
set mean median p90 0 foo 0.11 0.09 0.24 1 bar 0.10 0.09 0.20
如果你不需要默认的数字索引,还可以把set列设为索引:
df = df.set_index("set")
得到的结果为:
mean median p90 set foo 0.11 0.09 0.24 bar 0.10 0.09 0.20
批量处理写法
如果需要处理的字典数量较多,建议先把所有字典按名称存为键值对映射,再通过列表推导式批量生成行数据,避免手动逐个编写条目:
# 汇总所有待处理字典 dict_collection = { "foo": foo, "bar": bar # 后续新增字典直接在这里加键值对即可 } df = pd.DataFrame([ {"set": dict_name, **stat_values} for dict_name, stat_values in dict_collection.items() ])
说明:如果不同字典包含的统计字段(键)不完全一致,pandas会自动对齐列名,缺失的字段默认填充
NaN值。
内容的提问来源于stack exchange,提问作者DeltaIV
相关产品推荐
相关产品推荐

