通过唯一的column1 column2组合从pandas数据帧中转储JSON

雷纳

我在SQL数据库中有一些要转换为JSON的数据。对于grp1和grp2的每个独特组合,我希望它列出grp1,grp2和名称。我猜正确的术语是嵌套JSON?

到目前为止,这是我的代码:

import pandas as pd
import json

json_string = '[{"grp1":"aaa","grp2":"streets","name":"Carter"},{"grp1":"aaa","grp2":"streets","name":"Chestnut"},{"grp1":"aaa","grp2":"streets","name":"Main"},{"grp1":"aaa","grp2":"aaa","name":"aaa"},{"grp1":"aaa","grp2":"ramps","name":"Ramp_A"},{"grp1":"aaa","grp2":"ramps","name":"Ramp_B"},{"grp1":"aaa","grp2":"ramps","name":"Ramp_C"},{"grp1":"test1","grp2":"test2","name":"testname"}]'

a_json = json.loads(json_string)

df = pd.DataFrame.from_dict(a_json)
print(df)

g = df.groupby(['grp1', 'grp2']).size().reset_index().rename(columns={0:'count'})
g['combo'] = g['grp1'] + '-' + g['grp2']
print(g)

如何使用json.dumps吐出以下嵌套的JSON?

{
  "groups": [
  {
    "title": "aaa-aaa",
    "items": [
      {
         "title": "aaa",
         "combo3": "aaa-aaa-aaa"
      }
    ]
  },
  {
    "title": "aaa-streets",
    "items": [
      {
         "title": "Carter",
         "combo3": "aaa-streets-Carter"
      },
      {
         "title": "Chestnut",
         "combo3": "aaa-streets-Chestnut"
      },
      {
         "title": "Main",
         "combo3": "aaa-streets-Main"
      }
    ]
  },
  {
    "title": "aaa-ramps",
    "items": [
      {
         "title": "Ramp_A",
         "combo3": "aaa-ramps-Ramp_A"
      },
      {
         "title": "Ramp_B",
         "combo3": "aaa-ramps-Ramp_B"
      },
      {
         "title": "Ramp_C",
         "combo3": "aaa-ramps-Ramp_C"
      }
    ]
  },
  {
    "title": "test1-test2",
    "items": [
      {
         "title": "testname",
         "combo3": "test1-test2-testname"
      }
    ]
  }
  ]
}
系列休闲

在最终将它们转换为json格式之前,您需要收集这些项并将它们映射到临时字典。

这是运行代码:

json_string = '[{"grp1":"aaa","grp2":"streets","name":"Carter"},{"grp1":"aaa","grp2":"streets","name":"Chestnut"},{"grp1":"aaa","grp2":"streets","name":"Main"},{"grp1":"aaa","grp2":"aaa","name":"aaa"},{"grp1":"aaa","grp2":"ramps","name":"Ramp_A"},{"grp1":"aaa","grp2":"ramps","name":"Ramp_B"},{"grp1":"aaa","grp2":"ramps","name":"Ramp_C"},{"grp1":"test1","grp2":"test2","name":"testname"}]'

a_json = json.loads(json_string)
df = pd.DataFrame(a_json)

df['title'] = df['grp1'] + '-' + df['grp2']
df['combo3'] = df['grp1'] + '-' + df['grp2'] + '-' + df['name']

result_json = df[['title', 'name', 'combo3']].groupby(['title'])\
    .apply(lambda x: x[['name', 'combo3']].rename(columns={'name': 'title'}).to_dict('r'))\
    .reset_index()\
    .rename(columns={0:'items'})\
    .to_json(orient='records')

print(result_json)

输出:

[
  {
    "title": "aaa-aaa",
    "items": [
      {
        "name": "aaa",
        "combo3": "aaa-aaa-aaa"
      }
    ]
  },
  {
    "title": "aaa-ramps",
    "items": [
      {
        "name": "Ramp_A",
        "combo3": "aaa-ramps-Ramp_A"
      },
      {
        "name": "Ramp_B",
        "combo3": "aaa-ramps-Ramp_B"
      },
      {
        "name": "Ramp_C",
        "combo3": "aaa-ramps-Ramp_C"
      }
    ]
  },
  {
    "title": "aaa-streets",
    "items": [
      {
        "name": "Carter",
        "combo3": "aaa-streets-Carter"
      },
      {
        "name": "Chestnut",
        "combo3": "aaa-streets-Chestnut"
      },
      {
        "name": "Main",
        "combo3": "aaa-streets-Main"
      }
    ]
  },
  {
    "title": "test1-test2",
    "items": [
      {
        "name": "testname",
        "combo3": "test1-test2-testname"
      }
    ]
  }
]

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章

熊猫,对于 column1 的每个唯一值,我想计算它为 column2 的每个唯一值出现的次数

Python,过滤 csv 以获取 column1 中的唯一值并返回

如何合并column1为column2的子字符串的数据帧

通过用0填充表来确保Column1的每个不同值都有一个包含Column2的每个不同值的行-Postgresql

SQL根据两行中column1中的值选择一column2

根据 column1 的值将 column1 的值设置为 column2 的值

从Oracle DB以每行<column1> column2 <column1>的形式读取XML

如果 column1 是数字,则更新 column2

为什么这次我不能通过print(['column1'])从DataFrame中选择一列?

根据旧数据帧中的计数column1创建新数据帧(column1 x column1)?

SELECT WHERE column1 = 1 AND column2 = MAX(column2)

在 R 中的数据框中,Column1 的值是 Column2 的最小值

如何构造单个 JSON,其中 column1 是属性名称,column2 是值

根据另一列中的值按 column1 或 column2 对行进行排序

创建一个聚合函数,该函数返回与最大column2值关联的column1值

如何选择column2,但如果column2为零,则选择select column1

选择 column1、column2、column3 和 column4 != 1 的行

fill up NaN values(column1) in existing column based on other column(column2) using pandas dataframe python

熊猫数据框到json,格式为{column1 name:[Values],column2 name:[values],Column3 name ...}

MySQL的。选择列作为column1,在其中...全部合并选择列作为column2,在其中...仅看到column1(不是column2)

如果column2是NA,则在column1上联接,否则在column1和column2上联接

Mysql ORDER BY(Column2 + Column3)如果Column1为空?

条件更新 column1 或 column2 或 column3

如何在SQL中使“ column3” =“ column1”-“ column2”

如何将listA column1值匹配和替换为与ListB column1匹配的ListB column2值,就像我们在vlookup中所做的一样

R:对于 dfs 列表,过滤 Column1 中的值,以提取另一个 Column2 的平均值和 SD(仅在 Column1 中具有过滤值的行)

如果column2更改,则MySQL column1递增1

pandas :读取 xlsx 文件以使用 column1 作为键和 column2 作为值进行字典

为数据集中存在的所有不同的 column2 值填充缺失的 column1 值