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