在Python中将CSV数据转换为嵌套JSON

2024-09-30 08:27:36 发布

您现在位置:Python中文网/ 问答频道 /正文

我需要将CSV数据文件转换为Python中的嵌套JSON。我下面当前的Python代码对于1个Customer/Accounts文档可以正常工作,但是不知何故无法为CSV文件中的所有客户创建json转储。在

我提供了下面的Python代码,它将使您对我要实现的目标有一些了解。请让我知道,如果有任何现有的决议,这一点。在

Python代码示例:

import pandas as pd
from itertools import groupby 
from collections import OrderedDict
import json    

df = pd.read_csv('cust.csv', dtype={
        "ClientID" : str,
        "ClientName" : str,
        "AcctID" : str,
        "AcctNbr" : str,
        "AcctTyp" : str
    })

results = []

for (ClientID, ClientName), bag in df.groupby(["ClientID", "ClientName"]):
contents_df = bag.drop(["ClientID", "ClientName"], axis=1)
subset = [OrderedDict(row) for i,row in contents_df.iterrows()]
results.append(OrderedDict([("ClientID", ClientID),("ClientName", ClientName),("subset", subset)]))

print json.dumps(results[0], indent=4)

with open('ExpectedJsonFile.json', 'w') as outfile:
outfile.write(json.dumps(results[0], indent=4))

输入CSV示例:

^{pr2}$

所需输出JSON:

{  
   "clientId":00001,
   "ClientName":"John George",
   "subset":[  
      {  
         "AcctID":812001,
         "AcctNbr":"812001095",
         "AcctTyp":"DDA",
      },
      {  
         "AcctID":813002,
         "AcctNbr":"813002096",
         "AcctTyp":"SAV",
      },
      {  
         "AcctID":814003,
         "AcctNbr":"814003097",
         "AcctTyp":"AFS",
      }
   ]
},
{  
   "clientId":00024,
   "ClientName":"Richard Polado",
   "subset":[  
      {  
         "AcctID":512987,
         "AcctNbr":"512987085",
         "AcctTyp":"ML",
      },
      {  
         "AcctID":512983,
         "AcctNbr":"512983086",
         "AcctTyp":"IL",
      }
   ]
}

这些文档应该继续为其他成千上万的客户创建。在


Tags: csv代码importjsondfresultsordereddictclientid
2条回答

解按'ClientID','ClientName'对分组

你的数据帧

df = pd.DataFrame([['00001','John George','812001','812001095','DDA'],
['00001','John George','813002','813002096','SAV'],
['00001','John George','814003','814003097','AFS'],
['00024','Richard Polado','512987','512987085','ML'],
['00024','Richard Polado','512983','512983086','IL'],
['00345','John Cruze','1230','123001567','SAV'],
['00345','John Cruze','5145','514502096','CD'],
['00345','John Cruze','7890','7890033527','SGD']])

df.columns = ['ClientID','ClientName','AcctID','AcctNbr','AcctTyp'] 

现在呢

^{pr2}$

给出:

^{3}$

这就是你想要的吗?在

使用dictList.append(anotherDict.copy())否则将在列表中获得相同的dict对象。在

有关此问题的详细信息: Create List of Dictionary Python

相关问题 更多 >

    热门问题