The Pandas function DataFrame.to_dict() has an option orient='list' that outputs the layout you want.
The only difference is that it outputs a dict with single quote instead of JSON with double quotes. You can further convert the dict to JSON, e.g. as follows:
class dict2JSON(dict):
def __str__(self):
return json.dumps(self)
def __repr__(self):
return json.dumps(self)
result = dict2JSON(df.to_dict(orient='list'))
Demo
data = {'name': {1: 'bill', 2: 'mike', 3: 'dave'}, 'age': {1: 20, 2: 21, 3: 40}}
df = pd.DataFrame(data)
print(df.to_json(orient='columns'))
# Old Output
{"name":{"1":"bill","2":"mike","3":"dave"},"age":{"1":20,"2":21,"3":40}}
# Run new codes:
class dict2JSON(dict):
def __str__(self):
return json.dumps(self)
def __repr__(self):
return json.dumps(self)
result = dict2JSON(df.to_dict(orient='list'))
print(result)
# New Output
{"name": ["bill", "mike", "dave"], "age": [20, 21, 40]}
JSON? if yes then giveindex=Falsewhile exportingto_dict()withorient='list'then convert dict to JSON with double quotes. See my answer for details.