python - 将我的字典变成 pandas 数据框

标签 python pandas dictionary

我有一个函数,可以根据某些条件创建多个字典的字典。

但是,我真的很想在收集后将字典转换为数据框。 但我找不到一个简单的方法来做到这一点......现在我认为解决方案是将字典中的每个键乘以最内部字典中的键的数量,但希望有更好的方法

由于我的函数创建了字典,如果有更好的方法,我可以以任何方式更改它。

这是我现在的字典

{'TSLA': {2011: {'negative': {'lowPrice': 185.16,
    'lowDate': '05/27/19',
    'highPrice': 365.71,
    'highDate': '12/10/18',
    'change': -0.49}},
  2012: {'negative': {'lowPrice': 185.16,
    'lowDate': '05/27/19',
    'highPrice': 365.71,
    'highDate': '12/10/18',
    'change': -0.49}},
  2013: {'negative': {'lowPrice': 32.91,
    'lowDate': '01/07/13',
    'highPrice': 37.24,
    'highDate': '03/26/12',
    'change': -0.12},
   'positive': {'lowPrice': 32.91,
    'lowDate': '01/07/13',
    'highPrice': 190.9,
    'highDate': '09/23/13',
    'change': 4.8}}}}

我想要的输出是这样的,当然具有以下值:

                    lowPrice lowDate highPrice highDate change
ATVI  2012 Negative      NaN     NaN       NaN      NaN  NaN
           Positive      NaN     NaN       NaN      NaN  NaN
      2013 Negative      NaN     NaN       NaN      NaN  NaN
TSLA  2014 Positive      NaN     NaN       NaN      NaN  NaN
      2012 Negative      NaN     NaN       NaN      NaN  NaN
      2013 Positive      NaN     NaN       NaN      NaN  NaN
      2014 Positive      NaN     NaN       NaN      NaN  NaN

最佳答案

您可以将键元组的嵌套字典展平 2 次,然后传递给 DataFrame.from_dict :

d1 = {(k1, k2, k3): v3 
      for k1, v1 in d.items() 
      for k2, v2 in v1.items()
      for k3, v3 in v2.items()}

df = pd.DataFrame.from_dict(d1, orient='index')
#alternative
#df = pd.DataFrame(d1).T
<小时/>
print (df)
                   lowPrice   lowDate highPrice  highDate change
TSLA 2011 negative   185.16  05/27/19    365.71  12/10/18  -0.49
     2012 negative   185.16  05/27/19    365.71  12/10/18  -0.49
     2013 negative    32.91  01/07/13     37.24  03/26/12  -0.12
          positive    32.91  01/07/13     190.9  09/23/13    4.8

关于python - 将我的字典变成 pandas 数据框,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/59910697/

相关文章:

python - 更新 Jupyter Notebook 扩展的正确方法是什么?

python - ValueError : No axis named "type" for object type <class 'pandas. core.frame.DataFrame

python - 改进带有日期的对象列的性能过滤

python - 如何读取字典树

json - 在 Golang 中访问 map[string]interface{} 类型的嵌套映射

python - 为什么我的代码得不到预期的返回?

python - APScheduler 在上次运行完成后重复作业

dictionary - Ansible 展平/合并字典,但不完全

python - 为什么我不能迭代 locals() 并在迭代中使用返回的项目作为键?

python - 合并两个具有相似列的数据框