Json 数据排序 PANDAS,python



我有这样的json:

json = {
"b": 22,
"x": 12,
"a": 2,
"c": 4
}

当我从这个json生成一个 Excel 文件时,如下所示:

import pandas as pd
df = pd.read_json(json_text)
file_name = 'test.xls'
file_path = "/tmp/" + file_name
df.to_excel(file_path, index=False)
print("path to excel " + file_path)

Pandas 在 Excel 文件中进行自己的排序,如下所示:

pandas_json = {
"a": 2,
"b": 22,
"c": 4,
"x": 12
}

我不要这个。我需要json中存在的排序。请给我一些建议如何做到这一点。

更新: 如果我有这样的 JSON:

json = [
{"b": 22, "x":12, "a": 2, "c": 4},
{"b": 22, "x":12, "a": 2, "c": 2},
{"b": 22, "x":12, "a": 4, "c": 4},
]

熊猫将生成自己的订单,如下所示:

panas_json = [
{"a": 2, "b":22, "c": 4, "x": 12},
{"a": 2, "b":22, "c": 2, "x": 12},
{"a": 4, "b":22, "c": 4, "x": 12},
]

如何让熊猫保留我自己的顺序?

您可以将 json 读取为OrderedDict这将有助于保留原始顺序:

import json
from collections import OrderedDict
json_ = """{
"b": 22,
"x": 12,
"a": 2,
"c": 4
}"""
data = json.loads(json_, object_pairs_hook=OrderedDict)
pd.DataFrame.from_dict(data,orient='index')

0
b  22
x  12
a   2
c   4

编辑,更新的 json 也有效:

j="""[{"b": 22, "x":12, "a": 2, "c": 4},
{"b": 22, "x":12, "a": 2, "c": 2},{"b": 22, "x":12, "a": 4, "c": 4}]"""

data = json.loads(j, object_pairs_hook=OrderedDict)
pd.DataFrame.from_dict(data).to_json(orient='records')

'[{"b":22,"x":12,"a":2,"c":4},{"b":22,"x":12,"a":2,"c":2}, 
{"b":22,"x":12,"a":4,"c":4}]'

最新更新