【问题标题】:How to access json file in jupyter?如何在jupyter中访问json文件?
【发布时间】:2021-12-28 19:40:42
【问题描述】:

我想访问 json 文件并将其转换为数据帧,但显示的参数无效。

import json
import pandas as pd
a='https://power.larc.nasa.gov/api/temporal/daily/point?parameters=WS10M_MAX&community=RE&longitude=85.1500&latitude=25.6100&start=20210101&end=20210331&format=JSON'
data = json.load(open(a))

df = pd.DataFrame(data)

错误是-

OSError: [Errno 22] Invalid argument: 'https://power.larc.nasa.gov/api/temporal/daily/point?parameters=WS10M_MAX&community=RE&longitude=85.1500&latitude=25.6100&start=20210101&end=20210331&format=JSON'

【问题讨论】:

  • 您不能使用内置的open() 来获取URL 的内容。使用requests

标签: python dataframe jupyter-notebook


【解决方案1】:

使用请求:

import requests

url = 'https://power.larc.nasa.gov/api/temporal/climatology/point'
parameters  = { "parameters": "T2M",
               "community": "SB",
               "longitude": 0,
               "latitude" : 0,
               "format" : "JSON"
               }
resp = requests.get(url=url, params=parameters)

pd.DataFrame(resp.json())

但可能更好的方法是使用 CSV(来自此 API 的 json 需要一些预处理):

from io import StringIO

url = 'https://power.larc.nasa.gov/api/temporal/climatology/point'
parameters  = { "parameters": "T2M",
               "community": "SB",
               "longitude": 0,
               "latitude" : 0,
               "format" : "CSV"
               }
resp = requests.get(url=url, params=parameters)
csv = StringIO(resp.text)
pd.read_csv(csv, header=9)

或如M.Zhang 建议的那样:

import urllib
pd.read_csv(f'{url}?{urllib.parse.urlencode(parameters)}', header=9)

【讨论】:

  • 另外,pd.read_csv 实际上适用于 HTTP(S) URL。
  • 真的,谢谢,我更新了我的答案!
猜你喜欢
  • 1970-01-01
  • 2023-03-30
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2018-12-30
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多