【问题标题】:Convert nested dictionary into dataframe将嵌套字典转换为数据框
【发布时间】:2014-05-10 06:04:27
【问题描述】:

我的字典是这样的

mydict = 
{240594.0: {1322.0: 1.6899999999999999, 1323.0: 1.6900000000000002, 1324.0: 1.6899999999999999, 1325.0: 1.6899999999999999, 1326.0: 1.6899999999999999, 1327.0: 1.6900000000000002, 1328.0: 1.6899999999999999, 1329.0: 1.6899999999999999, 1356.0: 1.6900000000000002, 1357.0: 1.6900000000000002, 1358.0: 1.6899999999999999, 1359.0: 1.6900000000000002, 1360.0: 1.6900000000000002, ...},

226918.0: {1322.0: 1.6900000000000002, 1323.0: 1.6899999999999999, 1324.0: 1.6900000000000002, 1325.0: 1.6899999999999999, 1326.0: 1.6900000000000002, 1327.0: 1.6899999999999999, 1328.0: 1.6900000000000002, 1329.0: 1.6899999999999999, 1352.0: 1.6900000000000002, 1353.0: 1.6900000000000002, 1354.0: 1.6899999999999999 ...}}

这是{iri_key: {week:price, week:price ...}, iri_key: {...}}的真实值 我想把这个字典转换成看起来像

的数据框
         week week  week ...
irikey: price price price ...
irikey: ...    ...   ...

以上情况

           1322.0                  ...
240594.0   1.6899999999999999      ...
226918.0   1.6900000000000002      ...

我该怎么做?

【问题讨论】:

  • 你知道week的范围吗?
  • 是的,从 1322 到 1373
  • 但其中一些缺少值,因此尺寸不匹配。一周的最大值仍然是 1373,最小值是 1322
  • 您可以通过将缺失值替换为一些无效值(如 -1)来完成字典
  • 其实pandas可以用不完整的dict来构造dataframe,我觉得

标签: python dictionary pandas dataframe


【解决方案1】:

您可能已经发现,DataFrame(mydict) 是有效代码。您可以简单地使用转置 (.T) 来获得您想要的结果。

在代码可读性和直接性方面,有一个更好的方法:使用特定的 DataFrame 构造函数DataFrame.from_dict,它有一个关键字参数orient

In [2]: DataFrame.from_dict(mydict, orient='index')
Out[2]: 
        1356  1357  1358  1359  1360  1322  1323  1324  1325  1326  1327  \
226918   NaN   NaN   NaN   NaN   NaN  1.69  1.69  1.69  1.69  1.69  1.69   
240594  1.69  1.69  1.69  1.69  1.69  1.69  1.69  1.69  1.69  1.69  1.69   

        1328  1329  1352  1353  1354  
226918  1.69  1.69  1.69  1.69  1.69  
240594  1.69  1.69   NaN   NaN   NaN  

[2 rows x 16 columns]

从您提供的示例数据中可以看出,缺失值和可变长度得到了妥善处理。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2021-11-28
    • 2022-01-07
    • 1970-01-01
    • 2021-08-30
    • 2018-08-14
    • 2015-10-06
    • 2019-09-06
    相关资源
    最近更新 更多