python - 将包含字典的字典列表转换为 Pandas 数据框
问题描述
我有以下 python 字典列表:
[{'date': '2019-02-21', 'basicStats': {'min': -0.9994264245033264, 'max': -0.41181543469429016, 'mean': -0.4983844268421697, 'stDev': 0.071324608484601}}, {'date': '2019-02-16', 'basicStats': {'min': -0.9990605711936951, 'max': -0.09592325985431671, 'mean': -0.385945735727586, 'stDev': 0.0640801258659954}}, {'date': '2019-02-01', 'basicStats': {'min': -0.9989479184150696, 'max': -0.21808761358261108, 'mean': -0.4007919550689754, 'stDev': 0.07135259658292871}}]
我想将它转换成一个熊猫数据框,其中有一列用于日期,而更多列用于“min”、“max”、“mean”和“stdev”。但是,当我这样做时:
pd.DataFrame(dict)
我得到:
date basicStats
0 2019-02-21 {'min': -0.9994264245033264, 'max': -0.4118154...
1 2019-02-16 {'min': -0.9990605711936951, 'max': -0.0959232...
2 2019-02-01 {'min': -0.9989479184150696, 'max': -0.2180876...
我怎样才能解决这个问题?
解决方案
from pandas.io.json import json_normalize
df = json_normalize(d)
print (df)
date basicStats.min basicStats.max basicStats.mean \
0 2019-02-21 -0.999426 -0.411815 -0.498384
1 2019-02-16 -0.999061 -0.095923 -0.385946
2 2019-02-01 -0.998948 -0.218088 -0.400792
basicStats.stDev
0 0.071325
1 0.064080
2 0.071353
另一个想法是扩展字典 - 提取键basicStats
并合并所有其他键:
df = pd.DataFrame([{**x, **x.pop('basicStats')} for x in d])
print (df)
date min max mean stDev
0 2019-02-21 -0.999426 -0.411815 -0.498384 0.071325
1 2019-02-16 -0.999061 -0.095923 -0.385946 0.064080
2 2019-02-01 -0.998948 -0.218088 -0.400792 0.071353
推荐阅读
- visual-studio - Cannot Attach Debugger with Docker Containers in Visual Studio 2019 - Errors
- python - formatting string sqlite queries in python for pd.read_sql_query
- acumatica - 从 Acumatica 的数据库中获取表的列名
- machine-learning - Linear Regression and gradient descent
- swift - iOS中文本编辑器格式的最佳方法
- java - 和尚和旋转
- amazon-web-services - 如何限制通过 IAM 角色创建的 EC2 实例的名称
- android - RecyclerView 的 onBindViewHolder() 不会将 TextView 从 List 绑定到 ViewHolder
- python - 使用 Python 在 .txt 文件的每一行中添加“-”号
- git - 显示特定分支的所有更新文件