我有这样的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}]'