复杂的无限列表到 DataFrame 的转换

Complex Infinite List to DataFrame conversion

列表包含以下格式的内容:

[{'m': {'name': 'esl',
   'type': 'FS',
   'env': 'C1',
   'service': 'None',
   'ins': '1'},
  'value': [17, 'NaN']},
 {'m': {'name': 'esl',
   'type': 'FS',
   'env': 'C1',
   'service': 'CBA',
   'instance': '10'},
  'value': [147, 'NaN']},
 {'m': {'name': 'esl',
   'type': 'FS',
   'env': 'C1',
   'service': 'CBA',
   'instance': '12'},
  'value': [16, 'NaN']}]

列表中有 n 项

需要一个列表到数据框的转换,所需的输出应具有以下列名称- 名称、类型、环境、服务、ins、值

结构非常混乱,并且存在不一致的键。所以下面的代码可以解决你的问题,

import pandas as pd


mainList = [{'m': {'name': 'esl',
   'type': 'FS',
   'env': 'C1',
   'service': 'None',
   'instance': '1'},
  'value': [17, 'NaN']},
 {'m': {'name': 'esl',
   'type': 'FS',
   'env': 'C1',
   'service': 'CBA',
   'instance': '10'},
  'value': [147, 'NaN']},
 {'m': {'name': 'esl',
   'type': 'FS',
   'env': 'C1',
   'service': 'CBA',
   'instance': '12'},
  'value': [16, 'NaN']}]

dfColumns = list(mainList[0]['m'].keys())
dfColumns.append('value')

mainDict = {}
for i in dfColumns:
    mainDict.update({i:[]})

for i in mainList:
    for key,value in i['m'].items():
        mainDict[key].append(value)
    mainDict['value'].append(i['value'])

df = pd.DataFrame(mainDict)

输出DataFrame将是

  name type env service instance       value
0  esl   FS  C1    None        1   [17, NaN]
1  esl   FS  C1     CBA       10  [147, NaN]
2  esl   FS  C1     CBA       12   [16, NaN] 

注意:我已将您的第一个元素从 ins 更正为 instance。为所有数据保留相同的密钥