I am trying to convert a Pandas Dataframe to a JSON object. My Dataframe contains data in the following format:
student date grade
Try that :
file.csv:
student,date,grade,course
0,Student_1,2017-06-25,93,ENGLISH
1,Student_2,2017-06-25,83,ENGLISH
2,Student_1,2017-06-25,93,MATH
3,Student_2,2017-06-25,83,MATH
4,Student_1,2017-06-26,90,MATH
5,Student_2,2017-06-26,85,MATH
6,Student_1,2017-06-26,96,ENGLISH
7,Student_2,2017-06-26,99,ENGLISH
Execute:
from collections import defaultdict
import json
import pandas as pd
df = pd.read_csv('file.csv')
json_doc = defaultdict(list)
for _id in df.T:
data = df.T[_id]
key = data.course
for elt in json_doc[key]:
if elt["date"] == data.date:
elt[data.student] = data.grade
break
else:
values = {'date': data.date, data.student: data.grade}
json_doc[key].append(values)
print(json.dumps(json_doc, indent=4))
Output:
{
"ENGLISH": [
{
"date": "2017-06-25",
"Student_1": 93,
"Student_2": 83
},
{
"date": "2017-06-26",
"Student_1": 96,
"Student_2": 99
}
],
"MATH": [
{
"date": "2017-06-25",
"Student_1": 93,
"Student_2": 83
},
{
"date": "2017-06-26",
"Student_1": 90,
"Student_2": 85
}
]
}