python - 将包含字典的字典列表转换为 Pandas 数据框

标签 python pandas dictionary

我有以下 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}}]

我想将它转换成一个 pandas 数据框,其中包含一个日期列和更多列“最小值”、“最大值”、“平均值”和“标准偏差”。但是,当我这样做时:

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...

我该如何解决这个问题?

最佳答案

使用json.json_normalize :

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

关于python - 将包含字典的字典列表转换为 Pandas 数据框,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/58870529/

相关文章:

python - Python 如何将表达式作为函数的参数?

plugins - 将 map 作为 Maven 插件参数

c# - 多个列表或字典?

python - Numpy 相关混淆

python - 当 QComboBox 设置为可编辑时

python Pandas : selecting rows based on criteria

python - 如何使用 python 读取(或解析)谷歌电子表格列注释(评论)

python - key 错误 : Key length exceeds index depth - pandas MultiIndex

java - 无法实例化 Map<String, ?扩展对象> map = new TreeMap<String, ?扩展对象>();

python - 在python中获取工作表excel的数量