我正在尝试从最终JSON文件应具有的架构开始构建数据框。
架构如下:
[{"plant": ,
"at": ,
"products": [{
"product": ,
"quantity": ,
}]
植物应为字符串,日期应为ISO8601,产品应为字符串,数量应为整数。
我按如下所示构建了数据框:
Plant At Products Product Quantity
XXX 2019-06-07 products product1 4
YYY 2019-06-07 products product2 -9
ZZZ 2019-06-07 products product3 2099
现在我正在尝试生成嵌套的JSON文件,但是我使用的代码无法按需工作
j2 = (df2.groupby(['plant', 'at'], as_index=False)
.apply(lambda x: x[['product', 'quantity']].to_dict('r'))
.reset_index()
.rename(columns={0: 'products'})
.to_json(orient='columns'))
我得到了这个JSON
{"plant":{"0":"XXX","1":"YYY","2":"ZZZ"},"at":{"0":"2019-06-07 12:53:13.983775","1":"2019-06-07 12:53:13.983775","2":"2019-06-07 12:53:13.983775"},"products":{"0":[{"product":product1,"quantity":4}],"1":[{"product":product2,"quantity":-9}],"2":[{"product":product3,"quantity":2099}]}}
但这实际上不是我应该生成的格式。
有什么建议吗?有没有办法保留日期的ISO8601格式?
答案 0 :(得分:0)
使用orient ='records'
df2.groupby(['Plant', 'At'])['Product', 'Quantity'].apply(lambda x: x.to_dict('r')).reset_index(name = 'Products').to_json(orient = 'records')
您得到
[{"Plant":"XXX",
"At":"2019-05-03",
"Products":[{"Product":"Product1","Quantity":4}]}]