我有一个dataframe df,第一条记录如下所示,例如:
oID mode flow custom s1 s2 plan1 plan2 prop1 prop2 rag eve1 eve2
0 AIR DD XWERTR1 29.03.2020 16.04.2020 29.03.2020 16.04.2020 29.03.2020 16.03.2020 G 16.03.2020 17.03.2020
1 SEA PP XWERTR1 07.04.2020 25.03.2020 07.04.2020 25.03.2020 07.04.2020 25.03.2020 A 16.03.2020 17.03.2020
2 AIR DD XWERTR1 04.04.2020 20.03.2020 04.04.2020 20.03.2020 04.04.2020 20.03.2020 G 16.03.2020 17.03.2020
3 AIR DD XWERTR1 04.04.2020 20.03.2020 04.04.2020 20.03.2020 04.04.2020 20.03.2020 G 16.03.2020 17.03.2020
4 SEA DD XWERTR1 04.04.2020 20.03.2020 04.04.2020 20.03.2020 04.04.2020 20.03.2020 R 16.03.2020 17.03.2020
我希望json看起来像这样:
{
"_id" : "0",
"oID" : "0",
"custom" : "XWERTR1",
"mode" : "AIR",
"flow" : "DD",
"milestone" : {
"creation" : {
"s1" : "29.03.2020",
"plan1" : "29.03.2020",
"prop1" : "29.03.2020"
},
"transp" : {
"s2" : "16.04.2020",
"plan2" : "16.04.2020",
"prop2" : "16.04.2020"
}
}
"rag" : "G",
"eve1" : "16.03.2020",
"eve2" : "17.03.2020"
}
实际上,在“里程碑”新创建的字段下,我将创建嵌套的类别,即“创建”和“传输”。它们将分别包含s1、plan1、prop1和s2、plan2、prop2的值
我从这里得到了以下代码:Convert Pandas Dataframe to nested JSON但这还不足以解决我的问题,因为我想在Json上添加另一个元素数组(s2,plan2,prop2)
j = (df.groupby(['oID','mode','flow','custom','rag','eve1','eve2'], as_index=False)
.apply(lambda x: x[['s1','plan1','prop1']].to_dict('r'))
.reset_index()
.rename(columns={0:'creation'})
.to_json(orient='records',date_format='iso'))
我努力让“创建”和“传输”分别包含元素s1、plan1、prop1和s2、plan2、prop2
我该怎么做
谢谢
经过一段时间后,我可以使用模板方法解决问题:
感谢@PeterMortesen和RaminNietzsche的帮助
相关问题 更多 >
编程相关推荐