首页 > 解决方案 > Python JSON文件到排序的熊猫数据框

问题描述

我有一个以下格式的 JSON 文件:

[
  {
    "positionmessage": {
      "name": "ship-1",
      "sog": 0,
      "latitude": 51.82284,
      "eni": "02010000",
      "mmsi": "100000"
    }
  },
  {
    "positionmessage": {
      "name": "ship-2",
      "sog": 0,
      "latitude": 51.81966,
      "eni": "02020000",
      "mmsi": "200000"
    }
  },
  {
    "positionmessage": {
      "name": "ship-2",
      "sog": 0,
      "latitude": 51.8196,
      "eni": "02020000",
      "mmsi": "200000"
    }
  },
  {
    "positionmessage": {
      "name": "ship-3",
      "sog": 0,
      "latitude": 51.8225,
      "eni": "02030000",
      "mmsi": "300000"
    }
  },
  {
    "positionmessage": {
      "name": "ship-4",
      "sog": 0,
      "latitude": 51.8291,
      "eni": "02040000",
      "mmsi": "400000"
    }
  }
]

我想获得一个带有列变量的熊猫数据框:

行上应该是所有列的内容。我该怎么做呢?

标签: jsonpython-3.xpandas

解决方案


与行参数一起使用read_json,转换为列表,然后转换为DataFrame

L = pd.read_json('file.json', lines=True)['positionmessage'].tolist()
df = pd.DataFrame(L)
print (df)
       name   sog  latitude       eni    mmsi
0    ship-1   0.0  51.82284  02010000  100000
1    ship-2   0.0  51.81966  02020000  200000
2    ship-2   0.0  51.81960  02020000  200000
3    ship-3   0.0  51.82250  02030000  300000
4    ship-4   0.0  51.82910  02040000  400000
5    ship-5   8.0  51.82384  02050000  500000
6    ship-6   0.0  51.82470  02060000  600000
7    ship-7   0.0  51.81920  02070000  700000
8    ship-6   0.0  51.82470  02060000  600000
9    ship-8   9.0  51.82870  02080000  800000
10   ship-9   0.0  51.82710  02090000  900000
11  ship-10   9.0  51.82620  02010000  100000
12  ship-11   0.0  51.81930  02011000  110000
13  ship-12  10.0  51.82390  02012000  120000

推荐阅读