Quantcast
Channel: Active questions tagged python - Stack Overflow
Viewing all articles
Browse latest Browse all 14360

How can I transform repeated data from dataframe into single dictionary?

$
0
0

I'm new to python and I'm trying to get accustomed to it.

Basically, I have an excel file with student info and I read it into python using pandas. It looks something like this:

_idstudent_idfirst_namelast_nametypegrade
11001JohnDoeProject5.92
21001JohnDoeOral2.34
31001JohnDoeQuiz6.59
41001JohnDoeEssay9.58
51002HarrySchmoeProject8.92
61002HarrySchmoeOral5.94
71002HarrySchmoeQuiz4.75
81002HarrySchmoeEssay9.58

I want to transform it into a dictionary to look like this:

[ {'_id': 1,'student_id': 1001,'first_name': 'John','last_name': 'Doe','results': [     {'type': 'Project', 'grade': 5.92}     {'type': 'Oral', 'grade': 2.34}     {'type': 'Quiz', 'grade': 6.59}     {'type': 'Essay', 'grade': 9.58}   ] }, {'_id': 2,'student_id': 1002,'first_name': 'Harry','last_name': 'Schmoe','results': [     {'type': 'Project', 'grade': 8.92}     {'type': 'Oral', 'grade': 5.94}     {'type': 'Quiz', 'grade': 4.75}     {'type': 'Essay', 'grade': 9.58}   ] }]

This is what I've tried, but it does not work as intended

grouped = df.groupby(['_id', 'student_id', 'first_name', 'last_name'])transformed_data = []for index, group in grouped:    group_dict = {"_id": index[0],"student_id": index[1],"first_name": index[2],"last_name": index[3],"results": dict(zip(group['type'], group['grade']))    }    transformed_data.append(group_dict)

Viewing all articles
Browse latest Browse all 14360

Trending Articles