首页 > 解决方案 > 如何使用“列”方向将 Pandas 数据框中的索引隐藏到 JSON 函数 DataFrame.to_json()

问题描述

例如。我的结果以这种格式返回

    "name": {
      "1": "bill",
      "2": "mike",
      "3": "dave"
    },
    "age": {
      "1": 20,
      "2": 21,
      "3": 40
    },

但我更喜欢以下格式

    "name": [
     "bill",
      "mike",
      "dave"
    ],
    "age": [
      20,
      21,
      40
    ],

标签: pythonpandasdataframe

解决方案


Pandas 函数DataFrame.to_dict()有一个选项orient='list'可以输出你想要的布局。

唯一的区别是它输出带有单引号的 dict 而不是带有双引号的 JSON。您可以进一步将 dict 转换为 JSON,例如如下:

class dict2JSON(dict):
    def __str__(self):
        return json.dumps(self)

    def __repr__(self):
        return json.dumps(self)

result =  dict2JSON(df.to_dict(orient='list')) 

演示

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]}

推荐阅读