Python CSV转换为特定的嵌套JSON

时间:2019-03-05 08:56:04

标签: json python-3.x pandas

我有一个数据框(将csv文件加载到Pandas中),如下所示:

col1    col2    col3    col4    col5    name    amount
1       USA     4000    Air     60  Education   200
1       USA     4000    Air     60  Car         100
1       USA     4000    Air     60  Restaurant  100
2       UK      5000    Cash    50  Government  125
2       UK      5000    Cash    50  Restaurant  135

现在,我需要将其转换为嵌套的json格式。对于一条记录(Col1,col2,col3,col4-考虑分组)

以下是Json格式的预期输出:

{
 “col5”: 60,
 “col4”: [
   {
     “name”: “Air”
   }
 ],
 “expenses”: [
   {
     “amount”: 200,
     “name”: “Education”
   },
   {
     “amount”: Car,
     “name”: “Car”
   },
   {
     “amount”: 100,
     “name”: “Restaurant”
   }
 ],
 “col1”: 1,
 “col2”: “USA”,
 “col3”: “4000”
}

我知道,这将是一些复杂的代码...但是有什么需要帮助的吗? 在此先感谢!!

1 个答案:

答案 0 :(得分:0)

我相信您需要:

对于字典:

d = (df.groupby(['col1','col2','col3','col4','col5'])
       .apply(lambda x: dict(zip(x['name'], x['amount'])))
       .reset_index(name='expenses')
       .to_dict(orient='records')
       )
print (d)

对于json:

j = (df.groupby(['col1','col2','col3','col4','col5'])
       .apply(lambda x: dict(zip(x['name'], x['amount'])))
       .reset_index(name='expenses')
       .to_json(orient='records')
       )
print (j)