将Pandas数据帧转换为动态嵌套的JSON。

19 浏览
0 Comments

将Pandas数据帧转换为动态嵌套的JSON。

我想创建一个类似于以下内容的数据框:

    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

pandas groupby to nested json

这些问题都没有帮助我,因为我希望我的数据框的每个索引都转换为单独的JSON负载,因为每个个体都将发送到我用于将数据发布到数据库的API服务。

0
0 Comments

Pandas dataframe to a dynamic nested JSON问题的出现原因是需要将一个Pandas DataFrame转换为一个具有动态嵌套结构的JSON格式。在这种情况下,DataFrame包含了多个分组,每个分组又包含了多个子分组,需要将这种嵌套关系转换为适合JSON格式的结构。

为了解决这个问题,可以按照以下步骤进行操作:

1. 导入pandas库,创建一个DataFrame对象。在示例中,DataFrame包含了三列数据:entityCode、sourceCode和identityTypeCode。

2. 创建一个空列表results,用于存储最终的结果。

3. 使用groupby函数按照entityCode和sourceCode两列进行分组,得到一个分组后的子DataFrame。

4. 使用for循环遍历每个分组,获取entityCode和sourceCode的值。

5. 创建一个空字典d,用于存储每个分组的结果。

6. 在字典d中创建一个键值对,键为"individualInfo",值为一个包含entityCode和sourceCode的字典。

7. 创建一个空列表sub_result,用于存储每个子分组的结果。

8. 在子DataFrame中使用drop_duplicates函数去除重复的行,并使用iterrows函数遍历每行数据。

9. 将每行数据转换为字典形式,并添加到列表sub_result中。

10. 在字典d中创建一个键值对,键为"individualIdentifier",值为列表sub_result。

11. 将字典d添加到列表results中。

12. 最后,将列表results转换为JSON格式。

通过以上步骤,可以将DataFrame转换为具有动态嵌套结构的JSON格式。最终的结果是一个包含多个字典的列表,每个字典包含了"individualInfo"和"individualIdentifier"两个键值对,分别对应entityCode和sourceCode的值以及identityTypeCode的列表。

这样的数据结构可以更好地表示嵌套关系,便于后续的数据处理和分析。

0
0 Comments

Pandas dataframe转换为动态嵌套JSON

在处理数据时,有时候我们需要将Pandas dataframe转换为嵌套的JSON格式。下面的代码展示了一种解决方法。

代码中使用了Pandas库以及collections和json模块。首先,我们需要先导入这些模块并准备好我们的数据,将其存储在一个名为"result"的dataframe中。

接下来,我们使用defaultdict函数创建一个嵌套字典(dicted)。然后,我们遍历result的每一行,将每一行的数据提取出来,并以firstName、lastName和emailAddress作为标识符。

如果字典中已经存在以标识符为键的嵌套字典(individualInfo),则不做任何操作。否则,我们创建一个空的individualInfo字典,并将其添加到dicted中。

然后,我们将实体代码(entityCode)、来源代码(sourceCode)、角色代码(roleCode)和是否为从属(isDependent)的值添加到individualInfo字典中。

接着,我们检查individualInfo字典中是否已经存在individualIdentifier键。如果不存在,则创建一个空的individualIdentifier列表,并将其添加到individualInfo字典中。

最后,我们将身份类型代码(identityTypeCode)、标识符值(identifierValue)以及个人信息(firstName、lastName和emailAddress)添加到individualIdentifier列表中。

最后,我们遍历dicted字典,并使用json.dumps函数将其转换为JSON格式并打印出来。

通过上述代码,我们可以将Pandas dataframe转换为嵌套的动态JSON格式,以满足我们的需求。

整理自stackoverflow.com的回答:

https://stackoverflow.com/questions/63094747

0
0 Comments

Pandas DataFrame 转换为动态嵌套 JSON 的原因是数据不符合所需的格式。解决方法是使用 Pandas 的 to_dict 方法将 DataFrame 转换为字典,然后再根据需要的格式进行处理。

在上述内容中,提供了一种实现的方法。首先通过 set_index 方法将 DataFrame 的两列作为索引,然后使用 to_dict 方法将 DataFrame 转换为字典。这样得到的字典可以根据指定的索引值进行查找。

在处理 JSON 中的 profileInfo 时,可以使用上述字典并根据相应的索引值进行引用。这样就可以实现将 DataFrame 转换为动态嵌套 JSON 的需求。

原作者也提到了尝试过类似的方法,但由于数据不符合1维格式的要求,无法成功进行分组。

以上是解决问题的思路和方法。通过将 DataFrame 转换为字典,并根据需要进行索引和引用,可以实现将 DataFrame 转换为动态嵌套 JSON 的功能。

0