[英]Convert Nested JSON to CSV using Pandas
我正在嘗試使用 Pandas 將嵌套的 JSON 轉換為 CSV。 我看過這里提出的類似問題,但我似乎無法應用於我的場景。 我的 JSON 如下
{
"51% FIFTY ONE PERCENT(PWD)" : {
"ID" : "51%1574233975114-WEBAD",
"contactName" : "",
"createdAt" : 1574233975,
"debit" : 118268.19999999995,
"defaultCompany" : "",
"emailAddress" : "",
"lastUpdatedAt" : "",
"phoneNumber" : "",
"taskNumber" : 0
},
"51% STORE (MUZ)" : {
"ID" : "51%1576650784631-WEBAD",
"contactName" : "",
"createdAt" : 1576650784,
"debit" : 63860,
"defaultCompany" : "",
"emailAddress" : "",
"lastUpdatedAt" : "",
"phoneNumber" : "",
"taskNumber" : 0
},
"ABBOTT S" : {
"STORE (ABD)" : {
"ID" : "ABB1574833257715-WEBAD",
"contactName" : "",
"createdAt" : 1574833257,
"debit" : 35065,
"defaultCompany" : "",
"emailAddress" : "",
"lastUpdatedAt" : "",
"phoneNumber" : "",
"taskNumber" : 0
}
}
}
這是 JSON 的一個片段,正如您所看到的,有些條目(並非全部)是嵌套的。 我嘗試使用 json_normalize 以下方式即
import json
from pandas.io.json import json_normalize
with open('.\Customers\kontrolkotlin-CUSTOMERS-export.json') as f:
d = json.load(f)
nycphil = json_normalize(data = d)
nycphil
我敢肯定有一個更簡單的說法,但是......
如果您假設嵌套 JSON 的葉子都具有相同的字段( ID
、 contactName
等...),那么您可以遞歸地展平您的 JSON 並創建一個記錄列表,保留將您帶到葉子的路徑。
就像是:
def flatten_json(x, path="", result=None):
if result is None:
result=[]
if "ID" in x:
result.append({**x, "path": path})
return
for key in x:
flatten_json(x[key], path + "/" + key, result)
return result
df = pd.DataFrame(flatten_json(data))
print(df)
結果:
ID contactName createdAt debit defaultCompany \
0 51%1574233975114-WEBAD 1574233975 118268.2
1 51%1576650784631-WEBAD 1576650784 63860.0
2 ABB1574833257715-WEBAD 1574833257 35065.0
emailAddress lastUpdatedAt phoneNumber taskNumber \
0 0
1 0
2 0
path
0 /51% FIFTY ONE PERCENT(PWD)
1 /51% STORE (MUZ)
2 /ABBOTT S/STORE (ABD)
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.