Я заметил, что pandas читает и пишет JSON медленнее, чем чистый python.Если вы уверены в том, что есть только два столбца, вы можете сделать что-то вроде этого:
data = [{'id' : x, 'data' : {'a' : y, 'b' : z}}
for x, (y, z) in zip(test.index, test.values.tolist())]
json.dumps(data)
Если вам нужно беспокоиться о большем количестве столбцов, вы можете сделать что-то вроде:
c = test.columns
data = [{'id' : x, 'data' : dict(zip(c, y))}
for x, *y in zip(test.index, test.values.tolist())]
json.dumps(data)
Или, если вы можете с этим справиться, перед вызовом выполните reset_index
вызов:
c = test.columns
data = [{'id' : x[0], 'data' : dict(zip(c, x[1:]))}
for x in test.reset_index().values.tolist()]
json.dumps(data)