Python字典列表非规范化

Python字典列表非规范化,python,arrays,list,dictionary,Python,Arrays,List,Dictionary,我有一个字典列表,如下所示: [[{'ID': '1', 'Value': '100'}, {'ID': '2', 'Value': '200'}], [{'ID': '2', 'Value': '300'}, {'ID': '2', 'Value': '300'}], ...]] 我想将其转换为一个非规范化的数据帧,每个键都有一个新的列,例如: # ID Value ID Value #0 1 100 2 100 #1

我有一个字典列表,如下所示:

 [[{'ID': '1',
    'Value': '100'},
   {'ID': '2',
    'Value': '200'}],
 [{'ID': '2',
  'Value': '300'},
  {'ID': '2',
  'Value': '300'}],
  ...]]
我想将其转换为一个非规范化的数据帧,每个键都有一个新的列,例如:

#     ID Value ID  Value
#0    1  100   2    100
#1    2  300   2    300

如果一个项目有3对id,则其他项目的值应为null。运行pd.DataFrame(list)只创建一个ID和一个Value列,并将这些值放在下面。作为独立的列,我们如何实现这一点

您可以使用
concat
功能:

data = [pd.DataFrame(i) for i in input_data]
out = pd.concat(data, axis=1)
print(out)
印刷品:

  ID Value ID Value
0  1   100  2   300
1  2   200  2   300
键是沿列轴连接的
轴=1

编辑: 刚才看到的信息中,所有“较短”列都带有零。此代码导致
NaN
而不是零,但是可以使用
fillna()
方法快速解决此问题:

out = out.fillna(value=0)
例如:

import pandas as pd

input_data = [[{'ID': '1',
    'Value': '100'},
   {'ID': '2',
    'Value': '200'}],
 [{'ID': '2',
  'Value': '300'},
  {'ID': '2',
  'Value': '300'}],
 [{'ID': '2',
  'Value': '300'},
  {'ID': '2',
  'Value': '300'},
  {'ID': '3',
  'Value': '300'}]]

data = [pd.DataFrame(i) for i in input_data]
out = pd.concat(data, axis=1)
out = out.fillna(value=0)
print(out)
印刷品:

  ID Value ID Value ID Value
0  1   100  2   300  2   300
1  2   200  2   300  2   300
2  0     0  0     0  3   300