如何展平包含值列表和字典的嵌套字典并将其导出为电子表格

时间:2020-05-19 12:23:41

标签: python pandas list dataframe dictionary

我在Python中使用非常嵌套的字典时遇到问题。它是以下示例:

mydict = {'Carcompany': {'Brand': 'Ford',
  'Factory': {'Country': 'Germany',
   'Workers': {'Engineers': '150', 'Mechanics': '200'},
   'FactoryDetails': [{'FactoryCode': '1',
     'FactoryCity': 'Cologne',
     'FactoryCityDetail': [{'Shifts': 'Day',
       'Days': '7'},
      {'Shifts': 'Night', 'Days': '5'}]},
    {'FactoryCode': '2',
     'FactoryCity': 'Berlin',
     'FactoryCityDetail': {'Shifts': 'Night',
      'Days': '5'}}]}}}

因此,有些值包含字典列表,而该值又包含带有字典列表的值。深度各不相同,我的目标是创建一个excel电子表格或关系数据库表,如下所示:

enter image description here

我试图通过pd.io.json.json_normalize()来使字典扁平化,以获取pandas数据帧,找到列表,分解列,然后再次使其扁平化。该解决方案确实很慢,并且在更深层和更多嵌套的情况下会失败。

我的想法是使用递归方法,但是到目前为止,在字典列表中(由于更新dict值)或返回每个值的枚举单行,我在stackoverflow上发现的所有内容都失败了。

1 个答案:

答案 0 :(得分:1)

不确定您是否研究过flatten_json Flatten JSON。我用它为我的复杂JSON-flatten_json recursive flattening function for lists

编写了一个递归函数