簡體   English   中英

如何使用Python組合來自不同數組的JSON對象

[英]How to Combine JSON Objects From Different Arrays With Python

我試圖使用Python遍歷不同的JSON數組,以便將所有對象組合成一個數據結構。 JSON如下所示:

data = {
  "Wednesday, Apr 3, 2019": [
    {
      "id": "000",
      "keyid": "4273666087",
      "name": "Raptor",
      "symbol": "RPT",
    },
    {
      "id": "111",
      "keyid": "1818114564",
      "name": "Duck",
      "symbol": "DUK",
    }
  ],
  "Tuesday, Apr 2, 2019": [
    {
      "id": "222",
      "keyid": "8032408148",
      "name": "Hawk",
      "symbol": "HWK",
    },
    {
      "id": "333",
      "keyid": "0362766431",
      "name": "Goose",
      "symbol": "GOO",
    }
  ]
}

由於它看起來像字典,因此我嘗試執行以下操作:

for item in data.values():
   print(item)
   print("\n")

它將每個數組的對象組合到一個單獨的列表中。 但是我希望所有對象都成為同一數據結構的一部分,以使最終結果看起來像這樣:

id  | keyid      | name   | symbol
-----------------------------------
000 | 4273666087 | Raptor | RPT
-----------------------------------
111 | 1818114564 | Duck   | DUK
-----------------------------------
222 | 8032408148 | Hawk   | HWK
-----------------------------------
333 | 0362766431 | Goose  | GOO
-----------------------------------

最好的方法是什么?

使用pandas

import pandas as pd
df = pd.DataFrame([x for k,v in data.items() for x in v])
print(df)

輸出:

    id       keyid    name symbol
0  000  4273666087  Raptor    RPT
1  111  1818114564    Duck    DUK
2  222  8032408148    Hawk    HWK
3  333  0362766431   Goose    GOO

您可以使用常規Python來做到這一點,但這將是一個很大的麻煩,因此我支持使用可以一行完成的pandas

如要嵌套循環:

import pandas as pd
l = []
for k,v in data.items():
    for x in v:
        l.append(x)
df = pd.DataFrame(l)
print(df)

你很親密 您想進一步,並打印每一行的值。

print("id", "keyid\t", "name", "symbol", sep='\t|')

for group in data.values():
    for row in group:
        print("\t|".join([str(i) for i in row.values()]))

生產:

id      |keyid          |name   |symbol
000     |4273666087     |Raptor |RPT
111     |1818114564     |Duck   |DUK
222     |8032408148     |Hawk   |HWK
333     |0362766431     |Goose  |GOO

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM