Pandas数据帧为动态嵌套JSON

Man*_*ani 5 python json pandas

我想创建我的数据框,如下所示:

    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
Run Code Online (Sandbox Code Playgroud)

对于每一行,我想将其转换为嵌套的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
      }
} 
Run Code Online (Sandbox Code Playgroud)

这里重要的是我希望生成的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'))
Run Code Online (Sandbox Code Playgroud)

是否有可能在大熊猫中实现这样的动态?非常感谢你的帮助!

我可以找到很少的其他嵌套问题:

将Pandas Dataframe转换为嵌套的JSON

pandas groupby嵌套json

这些问题都没有帮助我,因为我希望将我的数据帧的每个索引转换为单独的JSON有效负载,因为每个人都要使用api服务,以便将数据发布到数据库.

Bri*_*eph 5

这听起来像是最合理的解决方法是:

info_dict = df.set_index(['identifierValue', 'identifierValue']).to_dict('index')
Run Code Online (Sandbox Code Playgroud)

然后,每次使用profileInfoJSON时,都可以info_dict使用适当的('identifierValue','identifierValue')键对引用上面的内容

我对你想要的格式感到困惑,但这是一个开始.