我有一份字典清单,例如:
[[{'ID': '1',
'Value': '100'},
{'ID': '2',
'Value': '200'}],
[{'ID': '2',
'Value': '300'},
{'ID': '2',
'Value': '300'}],
...]]我希望将其转换为一个非规范化的数据have,它将为每个键设置新的列,例如:
# ID Value ID Value
#0 1 100 2 100
#1 2 300 2 300如果一项有3对id,则对其他项的值应该为null。运行pd.DataFrame(列表)只创建一个ID和一个值列,并将值放在下面。作为独立的列,我们如何实现这一点?
发布于 2019-11-18 12:34:23
您可以使用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键是沿着列轴连接的axis=1。
编辑:
刚刚看到了所有“较短”列的零信息。THis代码导致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 300https://stackoverflow.com/questions/58914537
复制相似问题