Pandas MultiIndex dataframe to nested json
Solution 1:
Use nested list comprehension for add custom format of inner dicts:
import json
d = {level: {k1: [{'date': k, 'price': v}
for k, v in v1.items()]
for k1, v1 in df.xs(level).T.items()}
for level in df.index.levels[0]}
j = json.dumps(d)
print (j)
'1': {
'apples': [{
'date': '2022-01-01',
'price': 2.33
}, {
'date': '2022-01-02',
'price': 2.38
}, {
'date': '2022-01-03',
'price': 2.45
}],
'oranges': [{
'date': '2022-01-01',
'price': 1.99
}, {
'date': '2022-01-02',
'price': 1.96
}, {
'date': '2022-01-03',
'price': 1.78
}],
'pears': [{
'date': '2022-01-01',
'price': 2.33
}, {
'date': '2022-01-02',
'price': 2.38
}, {
'date': '2022-01-03',
'price': 2.45
}]
},
'2': {
'bananas': [{
'date': '2022-01-01',
'price': 4.21
}, {
'date': '2022-01-02',
'price': 4.34
}, {
'date': '2022-01-03',
'price': 4.13
}],
'persimmons': [{
'date': '2022-01-01',
'price': 2.33
}, {
'date': '2022-01-02',
'price': 2.37
}, {
'date': '2022-01-03',
'price': 2.45
}]
}
}