从 json object 返回 Python 中的多个键值对并存储为数据帧

Returning multiple key value pairs from json object in Python and storing as dataframe

我有以下示例 json object 并希望 return 多个键值对(通过使用循环或其他方法解析 object)并将它们存储为数据框中的带标题的列和行。

我还希望能够添加一个条件(最好是在循环之前)来限制数据集,以便更快地处理更大的 json 数据集。

这是 json:

 x = {
   "Data":[
      {
         "City":"Barcelona",
         "Country":"Spain",
         "Population":"1,620,343"
      },
      {
         "City":"Tokyo",
         "Country":"Japan",
         "Population":"14,043,239"
      },
      {
         "City":"Helsinki",
         "Country":"Finland",
         "Population":"658,864"
      },
      {
         "City":"Paris",
         "Country":"France",
         "Population":"2,165,423"
      },
      {
         "City":"Bologna",
         "Country":"Italy",
         "Population":"388,367"
      },
      {
         "City":"Verona",
         "Country":"Italy",
         "Population":"257,353"
      },
      {
         "City":"Cartagena",
         "Country":"Colombia",
         "Population":"914,552"
      }
   ]
}

我可以 return 使用以下的特定值...

    output = [{element['City'], element['Country'], element['Population']} for element in x['Data']]
print(output)

哪个 return...

[{'1,620,343', 'Spain', 'Barcelona'}, {'14,043,239', 'Japan', 'Tokyo'}, {'Helsinki', '658,864', 'Finland'}, {'2,165,423', 'France', 'Paris'}, {'Italy', 'Bologna', '388,367'}, {'257,353', 'Verona', 'Italy'}, {'Colombia', 'Cartagena', '914,552'}]
  1. 为什么不保留键值对的顺序?有些显示为 'Population, Country, City',其他显示为 'Country, City, Population' 等

  2. 如何将此输出转换为数据帧以便于操作?

  3. 对于更大的数据集,我如何添加条件来限制体积以减少解析 json object 所需的计算开销?

谢谢

Why is the order of the key value pairs not preserved? Some appears 'Population, Country, City', others appear as 'Country, City, Population' etc etc.

a set是无序数据结构,所以不保留插入顺序。

How might I transform this output to a dataframe for easier manipulation?

你可以使用 pandas:

import pandas as pd
df = pd.DataFrame.from_dict(data)

With a larger dataset, how might I add a condition to limit the volume so as to reduce the computational expense required to parse the json object?

我不确定我的意见,但我认为仅使用我之前提到的代码然后使用 built-in pandas 功能进行过滤或其他任何操作可能是安全的。

决定通过遍历 json 对象并提取所有内容来解决我的问题,这样我就可以附加到列表并从所述列表创建数据框。这允许我保留所有值并根据我的选择操作数据框。

d = []
for x in x['Data']:
    d.append(x)

pd.DataFrame(d)