簡體   English   中英

如何解析此JSON數據以在Python中列出?

[英]How to parse this JSON data to list in Python?

我有一個看起來像這樣的json文件:

[{"lat":51.877743,"lng":-0.4116338,"acc":0,"time":0},`{"lat":51.877743,"lng":-0.4116338,"acc":20,"time":1465386382293},{"lat":51.877743,"lng":-0.4116338,"acc":20,"time":1465386412347}, ...`

我使用以下代碼閱讀它們:

import json

with open('data.json') as data_file:    
    data = json.load(data_file)

數據看起來像這樣:

data
Out[18]: 
[{u'acc': 0, u'lat': 51.877743, u'lng': -0.4116338, u'time': 0},
 {u'acc': 20, u'lat': 51.877743, u'lng': -0.4116338, u'time': 1465386382293L},
 {u'acc': 20, u'lat': 51.877743, u'lng': -0.4116338, u'time': 1465386412347L},

我想將“ lat”和“ lng”字段提取到這樣的列表中:

array([[ 0.37291534,  0.90496579],
       [ 0.43889613,  0.62523318],
       [ 0.96554937,  0.73811836],
       [ 0.9254325 ,  0.51556322],
       [ 0.26246525,  0.01470611],
       [ 0.73168115,  0.99624888],
       [ 0.38049958,  0.28766334],
       [ 0.94917181,  0.60546656],
       [ 0.52672308,  0.60608954],
       [ 0.03778316,  0.92360363]])

我該怎么做?

熊貓方法:

import pandas as pd

In [109]: df = pd.DataFrame(data)

In [110]: df
Out[110]:
   acc        lat       lng           time
0    0  51.877743 -0.411634              0
1   20  51.877743 -0.411634  1465386382293
2   20  51.877743 -0.411634  1465386412347

In [111]: df[['lat','lng']]
Out[111]:
         lat       lng
0  51.877743 -0.411634
1  51.877743 -0.411634
2  51.877743 -0.411634

In [112]: df[['lat','lng']].values
Out[112]:
array([[ 51.877743 ,  -0.4116338],
       [ 51.877743 ,  -0.4116338],
       [ 51.877743 ,  -0.4116338]])

您可以嘗試以下方法:

what_you_want = [[e['lat'], e['lng']] for e in data]

可以將其進一步轉換為array,或者更好的是,轉換為numpy.array

我不禁要建議您看看pandas.DataFrame

您可以簡單地使用列表理解:

>>> [[i['lat'], i['lng']] for i in data]
[[51.877743, -0.4116338], [51.877743, -0.4116338], [51.877743, -0.4116338]]

要獲取風格化的數組,請使用numpy

>>> import numpy as np
>>> np.array([[i['lat'], i['lng']] for i in data])
array([[ 51.877743 ,  -0.4116338],
       [ 51.877743 ,  -0.4116338],
       [ 51.877743 ,  -0.4116338]])

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM