![](/img/trans.png)
[英]How do I convert pandas dataframe to nested JSON object?
[英]How do I use Pandas to convert an Excel file to a nested JSON?
我是一名新手程序員,我正在嘗試使用 Pandas 將 excel 文件轉換為嵌套的 JSON。
我正在發布我的代碼和預期的 output,到目前為止我無法實現。 問題是我轉換為嵌套信息的 excel 列實際上應該屬於“地址”名稱,我不知道該怎么做。 將不勝感激任何建議。
這是 excel 文件的樣子:
import pandas as pd
import json
df = pd.read_excel("...", encoding = "utf-8-sig")
df.fillna('', inplace = True)
def get_nested_entry(key, grp):
entry = {}
entry['Forename'] = key[0]
entry['Middle Name'] = key[1]
entry['Surname'] = key[2]
for field in ['Address - Country']:
entry[field] = list(grp[field].unique())
return entry
entries = []
for key, grp in df.groupby(['Forename', 'Middle Name', 'Surname']):
entry = get_nested_entry(key, grp)
entries.append(entry)
print(entries)
with open("excel_to_json_output.json", "w", encoding = "utf-8-sig") as f:
json.dump(entries, f, indent = 4)
這是預期的結果
[
{
"firstName": "Angela",
"lastName": "L.",
"middleName": "Johnson",
"addresses": [
{
"postcode": "32807",
"city": "Orlando",
"state": "FL",
"country": "United States of America"
}
],
我得到的是這個
[
{
"Forename": "Angela",
"Middle Name": "L.",
"Surname": "Johnson",
"Address - Country": [
"United States of America"
]
},
嘗試這個
b = {'First_Name': ["Angela","Peter","John"],
'Middle_Name': ["L","J","A"],
'Last_Name': ["Johnson","Roth","Williams"],
'City': ["chicago","seattle","st.loius"],
'state': ["IL","WA","MO"],
'zip': [60007,98105,63115],
'country': ["USA","USA","USA"]}
df = pd.DataFrame(b)
predict = df.iloc[:,:3].to_dict(orient='records')
postdict = df.iloc[:,3:].to_dict(orient='records')
entities=[]
for i in range(df.shape[0]):
tm = predict[i]
tm["addresses"] = [postdict[i]]
entities.append(tm)
output
[{'First_Name': 'Angela',
'Middle_Name': 'L',
'Last_Name': 'Johnson',
'addresses': [{'City': 'chicago',
'state': 'IL',
'zip': 60007,
'country': 'USA'}]},
{'First_Name': 'Peter',
'Middle_Name': 'J',
'Last_Name': 'Roth',
'addresses': [{'City': 'seattle',
'state': 'WA',
'zip': 98105,
'country': 'USA'}]},
{'First_Name': 'John',
'Middle_Name': 'A',
'Last_Name': 'Williams',
'addresses': [{'City': 'st.loius',
'state': 'MO',
'zip': 63115,
'country': 'USA'}]}]
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.