将 JSON 加载到 Pandas 数据帧时保留列顺序

mrg*_*gou 4 python json pandas

我正在尝试理解这一点。

我有这个 JSON 文件:

[
 {
   "id": 1,
   "Z": "a",
   "C": "z",
   "D": "text"
 },
 {
   "id": 2,
   "Z": "b",
   "C": "y",
   "D": "text"
 },
 {
   "id": 3,
   "Z": "c",
   "C": "x",
   "D": "text"
 }
]
Run Code Online (Sandbox Code Playgroud)

数据的顺序是有意义的,需要保留,无论是行还是列。我需要将其加载到数据框中。那么,会发生以下情况:

[
 {
   "id": 1,
   "Z": "a",
   "C": "z",
   "D": "text"
 },
 {
   "id": 2,
   "Z": "b",
   "C": "y",
   "D": "text"
 },
 {
   "id": 3,
   "Z": "c",
   "C": "x",
   "D": "text"
 }
]
Run Code Online (Sandbox Code Playgroud)

正如您所看到的,虽然行仍然按正确的顺序排列,但列却按字母顺序排序。如何保持我的栏目顺序(或恢复它)?

谢谢!

per*_*erl 5

您可以reindex使用字典第一个元素的键列表来列出列(假设第一个元素的键按所需的顺序排列):

df = df.reindex(columns=list(json_data[0].keys()))

print(df)
Run Code Online (Sandbox Code Playgroud)

输出:

   id  Z  C     D
0   1  a  z  text
1   2  b  y  text
2   3  c  x  text
Run Code Online (Sandbox Code Playgroud)