[英]Convert JSON to CSV Nested JSON with Python Pandas
我有一個 python 腳本,它可以獲取一個 JSON 文件並使用 Pandas json_normalize ZC1C51AB408D163 提取我想要的特定列。 但是我在 JSON 中有一個嵌套的 JSON 值集,我試圖將其拉出但無法獲取代碼以正確獲取這些值。
下面是 JSON 值。 頂層是“cardEditions”,該層是“cardDetails”。 我想從這個嵌套的 json 中獲取一些 displayName 和 value 詳細信息,並將它們放入帶有 cardEditions 和 editionNo 值的 csv 中。
Looking for the output to be in a CSV pipe delimited like the following with the displayValues as the headers from the nested json.
版本號 | 姓名 | 版 | Position |
---|---|---|---|
666 | 馬特胡 | 第 1 版 | 中心場 |
{
"cardEditions": [{
"editionNo": 666,
"id": 1111,
"cardDetails": [{
"valueType": "Text",
"displayValueType": "Text",
"displayName": "Name",
"value": "Matt Hu"
},
{
"valueType": "Text",
"displayValueType": "Text",
"displayName": "Edition",
"value": "1st Edition"
},
{
"valueType": "Text",
"displayValueType": "Text",
"displayName": "Position",
"value": "Center Field"
}
],
"cardStatus": "NA"
}]
}
import pandas as pd
d = {
"cardEditions": [{
"editionNo": 666,
"id": 1111,
"cardDetails": [{
"valueType": "Text",
"displayValueType": "Text",
"displayName": "Name",
"value": "Matt Hu"
},
{
"valueType": "Text",
"displayValueType": "Text",
"displayName": "Edition",
"value": "1st Edition"
},
{
"valueType": "Text",
"displayValueType": "Text",
"displayName": "Position",
"value": "Center Field"
}
],
"cardStatus": "NA"
}]
}
df = pd.DataFrame(columns=['editionNo', 'Name', 'Edition', 'Position'])
for i, edition in enumerate(d['cardEditions']):
no = edition['editionNo']
vals = [details['value'] for details in edition['cardDetails']]
df.loc[i, :] = (no, *vals)
print(df)
印刷
指數 | 版本號 | 姓名 | 版 | Position |
---|---|---|---|---|
0 | 666 | 馬特胡 | 第 1 版 | 中心場 |
這是json_normalize
和pivot
的另一個解決方案。
# where "j" is your json data
out = (
pd.json_normalize(json.loads(j)['cardEditions'], record_path=['cardDetails'], meta='editionNo')
.drop(['valueType', 'displayValueType'],axis=1)
.pivot(index='editionNo', columns='displayName', values='value')
.rename_axis(columns=None)
.reset_index()
)
print(out)
Output:
editionNo Edition Name Position
0 666 1st Edition Matt Hu Center Field
如果有人知道如何將json_normalize
與我們不想要所有字段的record_path
一起使用,我真的很想知道。 我不得不從 record_path 中刪除列,因為我不知道如何首先跳過它們。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.