Вы должны преобразовать каждый документ в плоский документ (не вложенный).
Итак, первая запись будет такой:
{'user': 'user1', 'sub1': 90, 'sub4': 92, 'sub3': 73}
Теперь вы можете использовать панд для создания из диктата.
Это полный код:
doc_list = [
{
'username': "user1",
'result': [
{
'subId': "sub1",
'marks': 90
},
{
'subId': "sub4",
'marks': 92
},
{
'subId': "sub3",
'marks': 73
}
]
},
{
'username': "user3",
'result': [
{
'subId': "sub3",
'marks': 87
},
{
'subId': "sub5",
'marks': 91
},
{
'subId': "sub2",
'marks': 88
}
]
}
]
pandas_list = []
for doc in doc_list:
line = {'user': doc['username']}
for sub_mark in doc['result']:
line[sub_mark['subId']] = sub_mark['marks']
pandas_list.append(line)
df = pd.DataFrame.from_records(pandas_list)