【发布时间】:2019-05-12 20:32:25
【问题描述】:
我想创建如下所示的数据框:
employeeId firstName lastName emailAddress isDependent employeeIdTypeCode entityCode sourceCode roleCode
0 E123456 Andrew Hoover hoovera@xyz.com False 001 AE AHR EMPLR
0 102939485 Andrew Hoover hoovera@xyz.com False 002 AE AHR EMPLR
2 E123458 Celeste Riddick riddickc@xyz.com True 001 AE AHR EMPLR
2 354852739 Celeste Riddick riddickc@xyz.com True 002 AE AHR EMPLR
1 E123457 Curt Austin austinc1@xyz.com True 001 AE AHR EMPLR
1 675849302 Curt Austin austinc1@xyz.com True 002 AE AHR EMPLR
3 E123459 Hazel Tooley tooleyh@xyz.com False 001 AE AHR EMPLR
3 937463528 Hazel Tooley tooleyh@xyz.com False 002 AE AHR EMPLR
对于每一行,我想将其转换为嵌套的 JSON 格式。 所以我希望我的 JSON 对于每个人来说都是这样的,因为我想遍历数据框并将其发布到 api。
{
"individualInfo":
{
"individualIdentifier":[
{
"identityTypeCode":"001",
"identifierValue":"E123456",
"profileInfo":{
"firstName":"Andrew",
"lastName":"Hoover",
"emailAddress":"hoovera@xyz.com"
}
},
{
"identityTypeCode":"002",
"identifierValue":"102939485",
"profileInfo":{
"firstName":"Andrew",
"lastName":"Hoover",
"emailAddress":"hoovera@xyz.com"
}
}
],
"entityCode":"AE",
"sourceCode":"AHR",
"roleCode":"EMPLR"
"isDependent":False
}
}
这里重要的是,我希望生成的 JSON 与数据帧上的 Id 列无关。因此,例如,如果数据帧上有另一个 ID,那么我希望该 ID 具有另一个具有相同配置文件信息的字典对象。所以每个配置文件都可以有任意数量的Id。
我能做的代码:
j = (result.groupby(['identifierValue','identityTypeCode'], as_index=False).apply(lambda x: x[['firstName','lastName','emailAddress']].to_dict('r')).reset_index().rename(columns={0:'ProfileInfo'}).to_json(orient='records'))
是否有可能在 pandas 中动态实现这样的目标? 非常感谢您的帮助!
我能找到的其他几个嵌套问题:
Convert Pandas Dataframe to nested JSON
这些问题都没有帮助我,因为我希望将我的数据帧的每个索引都转换为单独的 JSON 有效负载,因为每个人都将使用我为将数据发布到数据库而拥有的 api 服务。
【问题讨论】:
-
假设你看到了这个? stackoverflow.com/questions/40470954/…
-
是的,我确实检查过它并且也使用了该代码。但是我的石斑鱼数据不是一维的。此外,如果
(identifierValue, identityTypeCode)的数量发生变化,json 可能会发生变化。所以我希望它是动态的! -
很遗憾,没有 - 我认为一个(我)可以编写一些可爱的递归函数来做到这一点,但
read_json和to_json在我自己的应用程序中并没有按照我需要的方式工作。在此过程中,有很多设计选择可供选择,而树中的每个分支都需要一段时间来探索。 -
我将我的数据框更新为更好的 group by 子句,但我仍然坚持我应该做的事情。有人可以帮我解决吗?
-
我可以再试一次;同时,也许可以通过大量指向其他 JSON 帖子的链接重新发布您的问题,并解释为什么您的问题不同?